我是“fork()”的新手,我到处读到,当调用 fork() 时,会启动当前(调用)进程的精确副本。现在当我运行以下代码时,应该有两个不同的进程,有两个不同的分配给它们的变量和函数的内存位置。
#include<stdio.h>
int i=10;
int pid;
int main(){
if((pid=fork())==0){
i++;//somewhere I read that separate memory space for child is created when write is needed
printf("parent address= %p\n",&i);// this should return the address from parent's memory space
}else{
i++;
i++;
printf("child address= %p\n",&i);// this should return the address of child's memory space
}
wait(0);
return(0);
}
为什么输出看起来像:: 子地址::804a01c 父地址::804a01c
为什么父母和孩子的地址都相同?