c - 如果不同的进程有自己的内存空间,局部变量的地址怎么可能相同呢?

标签 c process

<分区>

从现在开始,我认为在调用fork()之后,局部变量被复制到父进程和子进程中,它们是分开的。但是我尝试在不同的进程中获取每个局部变量的地址,结果它们是相同的:

int main(void){
  int local = 10;
  pid_t childPid;
  childPid = fork();
  if(childPid == 0 ){
    printf("[Child] the local value address is %p\n",&local);
  }else if(childPid < 0){
    printf("there is something wrong");
  }else{
    printf("[Parent] the local value address is %p\n",&local);
  }
  return (EXIT_SUCCESS);
}

输出是:

[Parent] 本地值地址为0x7fff5277baa8 [Child]本地值地址为0x7fff5277baa8

对此有什么想法吗?

最佳答案

在不同的“空间”中意味着不同空间中的“相同”索引点并不指代同一事物。将“空间”想象成一张纸。第 1 页上的“第 3 行第 4 个字符”与第 2 页上的内容不同。

关于c - 如果不同的进程有自己的内存空间,局部变量的地址怎么可能相同呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11856901/

相关文章:

c - 如何在 C 中包含一个可变大小的数组作为结构成员?

python - 模拟线程上的死锁

java - 如果外部程序挂起,如何退出进程 (.exec())

bash - 从同一脚本杀死其他 bash 守护进程

windows - PHP 进程 ram 和 cpu 使用率 (windows)

c - 父子进程打印

c - printf: 不能使用 %*c 打印少于 1 个字符

c - 如何理解程序

c - 是否可以检查变量是否为结构类型?

.net - 当您运行 .NET 可执行文件(一步一步到程序加载和运行的点)时,究竟会发生什么?