On Thu, 19 Oct 2000, Yohanes Nugroho wrote:
> nggak, malloc dan pasangannya free ditangani oleh library C, bukan oleh
> sistem operasi. Ketika exit otomatis librarynya melakukan clean up
> (andaikan tidak diclean up, memori untuk suatu proses di destroy ketika
> prosesnya exit).

Apa betul nih?
Seumpamanya pada program yang lalu itu saya punya
char *coba;
coba = malloc(sizeof(char) * 11);
coba = NULL;
tahu darimana library C-nya bahwa ada bagian memori yang perlu di-free()
saat exit, toh referensi ke memori yang hasil malloc() tersebut sudah
tidak ada. Dan setahu saya, program C tidak punya runtime-system yang
mengontrol jalannya program. Beda 'kan dengan misalnya Turbo Pascal, kalau
error, errornya jelas. Kalau C, kan paling-paling segfault.

> > > atau labih gampang lagi kalo main() di ganti jadi
> > > { 
> > >   char coba[] = "teststring";
> > lha ini bedanya apa mas dengan yang pake malloc ?
> 
> dg cara di atas memori yang dialokasikan statik, dgn malloc memori yang
> dialokasikan dinamik.

Saya coba programnya dengan alokasi string yang statik itu; segfault tuh.
Sepertinya kalau alokasi statik, memorinya ditaruh di suatu pool tertentu,
sehingga kalau nanti punya coba2[] = "teststring" di lain tempat,
compilernya akan mengacukan coba2 ke alamat yang sama dengan coba. Ya
setidaknya kalau di Java sih begitu, string statik disebutnya immutable;
alias tak bisa dirubah-rubah. Memang, kita bisa saja punya:
String myString = "myString";
myString = myString + "anotherString";
Sepertinya myString dirubah isinya, padahal sih, "myString" yang pertama
itu dibuang dulu, lalau isinya myString diganti dengan "myString" +
"anotherString". Berangkat dari situ, 'kali aja C compiler yang sekarang
pakai prinsip tersebut (yang alokasinya statik, jadi immutable). 

Oki

--
        Stroustrup himself has said in his retrospective book "The Design 
        and Evolution of C++" (p. 207),  "Within C++, there is a much 
        smaller and cleaner language struggling to get out." 
        [Many hackers would now add "Yes, and it's called Java" --ESR] 
                                        -The Jargon File on C++


--------------------------------------------------------------------------------
Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3
Pengelola dapat dihubungi lewat [EMAIL PROTECTED]

Kirim email ke