Re: [linux-programming] Penggunaan malloc
Tetapi dengan operasi pointer, Anda bisa menulis alamat memory mana saja, Sekarang tau deh kenapa bisa lebih :) malloc berfungsi menyediakan tempat penyimpan data secara dinamis, bukan untuk bounds checking Sekarang ngerti apa fungsi malloc yang sesungguhnya. -- Btw, kepada semua rekan yang sudah memberikan tanggapan dan pencerahan, terima kasih banyak. -- Berhenti langganan: linux-programming-unsubscr...@linux.or.id Arsip dan info: http://linux.or.id/milis
Re: [linux-programming] Penggunaan malloc
On 26 Jul 2012, at 04:17, Wirasto Karim wirastoka...@gmail.com wrote: Saya kebingungan dengan penggunaan malloc. int *p=(int *) malloc(2 * sizeof(int)); *p=1; *(p+1)=100; *(p+2)=300; *(p+3)=500; Kalau dari yang saya baca dibuku, bukankah seharusnya saya cuma bisa nyimpan 2 data integer?? Kenapa malah bisa lewat? char *nama=(char *) malloc (4 * sizeof(char)); Apa ini artinya saya hanya bisa memasukan teks sepanjang 4 karakter di variabel nama? Saya coba dengan karakter yang lebih panjang tetap bisa. Mohon pencerahan soal fungsi malloc ini. Sebelumnya terima kasih Ini yang disebut dengan buffer overflow. Bug seperti ini yang umum ditemui di banyak aplikasi. Malloc bekerja dengan membebaskan ruang memory, lalu mengembalikan alamat awal yang bisa digunakan. Tetapi dengan operasi pointer, Anda bisa menulis alamat memory mana saja, termasuk area diluar yang telah dialokasikan oleh malloc. Area memory ini bisa saja milik aplikasi lain, tetapi sekarang isinya ditimpa oleh aplikasi yg Anda tulis ini. Umumnya malware, virus, maupun trojan menggunakan teknik ini untuk menulis kode dirinya ke aplikasi lain. -- Donny Kurnia Apple ID: donnykur...@gmail.com Twitter: @donnykurnia Skype: donnykurnia My online profile: http://re.vu/donnykurnia --- At times the world can seem an unfriendly and sinister place. But believe us when we say there is much more good in it than bad. And what might seem to be a series of unfortunate events, may in fact, be the first steps of a journey. -- A Series of Unfortunate Events -- Berhenti langganan: linux-programming-unsubscr...@linux.or.id Arsip dan info: http://linux.or.id/milis
Re: [linux-programming] Penggunaan malloc
2012/7/26 Wirasto Karim wirastoka...@gmail.com: Saya kebingungan dengan penggunaan malloc. int *p=(int *) malloc(2 * sizeof(int)); *p = 1; *(p + 1)=100; *(p + 2)=300; *(p + 3)=500; Kalau dari yang saya baca dibuku, bukankah seharusnya saya cuma bisa nyimpan 2 data integer?? Kenapa malah bisa lewat? Hehe.. nggak usah capek-capek pake malloc, gini aja int numbers[2]; numbers[10] = 5; Coba aja deh, pasti bisa :) Terus bedanya apa? Bedanya cuma masalah keamanan. Kalo ngisi di array numbers angka dari 0 sampai 2, pasti tidak akan crash. char *nama=(char *) malloc (4 * sizeof(char)); Apa ini artinya saya hanya bisa memasukan teks sepanjang 4 karakter di variabel nama? Yak, tapi tentu saja, tetap bisa menaruh karakter pada index = 4 walaupun tidak aman. Saya coba dengan karakter yang lebih panjang tetap bisa. Ini yang namanya heap overflow :) Semoga membantu. regards, Dicky Arinal -- Berhenti langganan: linux-programming-unsubscr...@linux.or.id Arsip dan info: http://linux.or.id/milis
Re: [linux-programming] Penggunaan malloc
2012/7/26 Wirasto Karim wirastoka...@gmail.com Saya kebingungan dengan penggunaan malloc. int *p=(int *) malloc(2 * sizeof(int)); *p=1; *(p+1)=100; *(p+2)=300; *(p+3)=500; Kalau dari yang saya baca dibuku, bukankah seharusnya saya cuma bisa nyimpan 2 data integer?? Kenapa malah bisa lewat? char *nama=(char *) malloc (4 * sizeof(char)); Apa ini artinya saya hanya bisa memasukan teks sepanjang 4 karakter di variabel nama? Saya coba dengan karakter yang lebih panjang tetap bisa. Mohon pencerahan soal fungsi malloc ini. Sebelumnya terima kasih malloc berfungsi menyediakan tempat penyimpan data secara dinamis, bukan untuk bounds checking -- Berhenti langganan: linux-programming-unsubscr...@linux.or.id Arsip dan info: http://linux.or.id/milis