【发布时间】:2011-01-04 13:51:07
【问题描述】:
我对某事感到困惑。我已经读过,当父进程创建子进程时,子进程会获得其父进程地址空间的副本。抄袭是什么意思? 如果我使用下面的代码,那么它会为孩子和父母的堆上的变量“a”打印相同的值。那么这里发生了什么?
int main ()
{
pid_t pid;
int *a = (int *)malloc(4);
printf ("heap pointer %p\n", a);
pid = fork();
if (pid < 0) {
fprintf (stderr, "Fork Failed");
exit(-1);
}
else if (pid == 0) {
printf ("Child\n");
printf ("in child heap pointer %p\n", a);
}
else {
wait (NULL);
printf ("Child Complete\n");
printf ("in parent heap pointer %p\n", a);
exit(0);
}
}
【问题讨论】:
-
请注意,在父项和子项中,您都不打印变量
a的地址。您打印变量a的值,(它是指针类型)。 -
你看到喜欢的答案了吗?