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

Kirim email ke