1
我已經知道父母和孩子有不同的地址空間,但是當我運行下面的代碼並檢查父母和孩子中的變量地址時,它出現了相同。就好像兩個變量名都用於同一個內存位置一樣,爲什麼孩子的值變化沒有反映回父代。父母和孩子具有相同的varibale地址,但值不同
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
int turn = 0;
if (fork() == 0)
{
turn = 10;
printf("Child Turn: %d\n", turn);
printf("Child Address of turn: %p\n", &turn);
exit(0);
}
else
{
sleep(2);
printf("Parent Turn: %d\n", turn);
printf("Parent Address of turn: %p\n", &turn);
}
return 0;
}
輸出是:
孩子轉到:轉10
兒童地址:0xbfc1830c
家長轉到:回合0
父地址:0xbfc1830c
如果兩者有相同的地址,爲什麼價值不同或者它就像例如
如果我們有兩個盒子一個父母和一個孩子。
兩個箱子包含數字1到10。
所以在孩子箱我們也有說5號,
,並在父母箱我們也有5號
數量是相同的但在不同的盒子裏。
與上述情況類似,地址與0xbfc1830c相同,但在不同的進程地址空間中。是這樣嗎?