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