我知道父母和孩子有不同的地址空间但是当我运行下面的代码并检查父和子中的变量的地址时,它就变得相同了。好像两个变量名都是针对相同的内存位置,为什么没有子的值的变化反映在父级中。
#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,但是在不同的进程地址空间中。是这样吗。