On Thu, 19 Oct 2000, Agus Budy Wuysang wrote:
> > artinya compiler akan menyediakan suatu tempat dimemori (dan tidak ada
> ^^^^^^^^^
> > jaminan bahwa lokasinya dapat ditulisi) yang berisi string tersebut, lalu
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> Ah, saya sendiri baru tahu... ini berarti
>
> ptrString[0] = 'x';
>
> bisa saja gagal pada C compiler tertentu?
gagal dalam arti mengakses memori yang tidak boleh diakses.
Dengan gcc, hasilnya 'segmentation fault' di Turbo C (di dos)
mungkin tidak apa-apa (karena sistem operasinya tidak membatasi
suatu program untuk tidak menulis/membaca alamat memori tertentu.
> He he maklum C memang sedikit reserve wordnya tapi banyak
> aturannya.
>
> Belum lagi standard K&R/Trad C != ANSI C != C++
>
> gcc -Wall, -traditional & g++ saja tidak memberi
> warning apa2...
ya memang option diatas tidak memberi warning.
tapi jika Anda memakai option : -Wwrite-strings akan muncul warning
--------------------------------
[yohanes@merapi yohanes]$ cat dd.c
main(){
char * ptrString;
ptrString="1234567890";
ptrString[0]='z';
return puts (ptrString);
}
[yohanes@merapi yohanes]$ cc -Wwrite-strings dd.c
dd.c: In function `main':
dd.c:3: warning: assignment discards `const' from pointer target type
---------------------------------------
ketika saya compile program diatas hasil assembly-nya :
......
.section .rodata
.LC0:
.string "1234567890"
.text
.align 4
.....
gcc meletakkan string tersebut di section .rodata yang artinya
lokasi hanya baca.
--
Salam
Yohanes
SMS Mail : [EMAIL PROTECTED]
http://langitbiru.hypermart.net
--------------------------------------------------------------------------------
Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3
Pengelola dapat dihubungi lewat [EMAIL PROTECTED]