Re: [linux-programming] Penggunaan malloc

2012-07-26 Terurut Topik Wirasto Karim

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

2012-07-25 Terurut Topik Donny Kurnia
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-07-25 Terurut Topik Dicky Arinal
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-07-25 Terurut Topik Andika Triwidada
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