gpt4 book ai didi

c - 父子地址空间混淆

转载 作者:太空狗 更新时间:2023-10-29 15:36:45 25 4
gpt4 key购买 nike

很明显我们有这样的代码块

int 
main()
{
pid_t pid;
int y = 3;
if ( (pid = fork()) <0 )
return -1;;

if( pid == 0 ) /* child */
{
printf(" before: %d %p\n", y, &y );
y *= 10;
printf("after: %d %p\n", y, &y );
}
else /* father */
{
sleep(1);
printf("father: %d %p\n" , y , &y );

}
return 0;
}

每个 printf() 打印的地址与之前的 post 相同关于这个话题表明这是因为虚拟内存。但我的困惑是这是否意味着每个 parent 和 child 都拥有单独的物理地址空间,如果是,那么为什么虚拟地址不能不同,因为最终它将被映射到相应的MMU 的物理地址空间。

最佳答案

因为那样的话,您将不得不无缘无故地调整每个指针。由于每个进程的程序都是相同的,它们必须使用相同的虚拟地址才能工作。当然,在使用动态分配时,即使是虚拟地址也可能会有所不同。

关于c - 父子地址空间混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8353641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com