On Sat, 8 Jan 2005 18:40:05 +0900, baskara <[EMAIL PROTECTED]> wrote:
> 
> Saya mau tanya sedikit keanehan pada program C saya.
> Isinya kira2 begini:
> 
> int k;
> int *p;

di sini p == 12716 (default)

> 
> main() {
>   k = 0;

di sini k == 0

>   if ( (cpid = fork()) == 0) {
>      for (;;) {
>         k = 1; printf("child1 = %d %d \n",k,p);

di sini alamat yang ditunjuk p masih tetap (12716)
pada proses anak k == 1, pada proses bapak k == 0 (tetap, karena fork
mengkopi memori)

>      }
>   }
> 
>   if ((cpid = fork()) == 0) {
>      for (;;) {
>         printf("child2 = %d %d \n",k,p);

di sini alamat yang ditunjuk p masih tetap (12716)

>      }
>   }
> }
> 
> Hasilnya begini:
> 
> child1 = 1   12716
> child2 = 0   12716

1 adalah nilai k di proses anak, 0 adalah nilai k di proses bapak, dan
12716 adalah nilai p baik di anak maupun bapak.

> 
> ___ alamat memori sama, tetapi isinya beda ??? _______

Alamat memori yang ditunjuk p memang seharusnya sama (tidak ada
assignment), tapi isi dari k berbeda (ada assignment). Jadi di mana
anehnya mas ;)

> 


-- 
Demi masa..

Kirim email ke