gpt4 book ai didi

c - 共享内存地址

转载 作者:太空宇宙 更新时间:2023-11-04 08:07:48 27 4
gpt4 key购买 nike

我在 Linux 上使用 C,并分配 2 个共享内存段。

第一个段是在主程序中创建的,然后我调用一个子进程并创建第二个段。

在子进程中,我将第二个段的地址放在我在第一个段中预留的指针中。

回到主程序后,当我附加到第二个段并比较指针(从 shmat 返回的指针和子进程先前存储的指针)时,我发现它们是不同的。

这是预期的吗?

谢谢,马克。

最佳答案

是的,这是预期的。映射到两个进程的虚拟空间中的公共(public)地址将是一个非常有约束力的限制。其中,内存管理器必须同时知道哪些进程愿意映射,以便它找到一个公共(public)空闲区域。这将违背虚拟内存的原则(每个进程都看到一个空白地址空间),并导致配置无法仲裁。

在公共(public)地址共享确实是可能的,但只有当映射到地址空间的某个保留部分时才有意义,这样它就不会被映射到其他地方。

关于c - 共享内存地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41520024/

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