以下的一段代码
#include <stdio.h> #include <stdlib.h> int main() { pid_t pidnum; int x=5; pidnum=fork(); if(pidnum<0){ printf("creat error\n"); return 0; } else if(0==pidnum){ printf("i am the child,pid=%d\n",getpid()); printf("x=%d\nthe add=%d\n",x,&x); } else{ printf("i am the father,pid=%d\n",getpid()); printf("x=%d\nthe add=%d\n",x,&x); } return 0; }
在fork调用后,父子进程的x的地址是同一个..子进程应该复制了父进程的变量,怎么地址还是同一个呢?
这个地址是进程中的虚地址,又不是实际内存中的物理地址,两个不同进程内部的变量有同样的地址不是很正常的嘛。