gpt4 book ai didi

c++ - 在共享内存中分配对象

转载 作者:太空狗 更新时间:2023-10-29 20:30:38 27 4
gpt4 key购买 nike

这可能是个愚蠢的问题,但是...我有两个进程 P1 和 P2。 P1 能否在 P2 可见的共享内存中轻松分配一个对象 O? (P1 使用管道将指向 O 的指针传递给 P2)。像这样的东西:

// P1
ptr1 = new SharedMemoryObject(); // object O
pipe.send(ptr1)

// P2
ptr = pipe.recieve()
// I have access to O now

我想避免序列化和管道对象,我想在共享内存中创建它们并传递指针

最佳答案

每个进程都有自己的地址空间,这意味着尽管两个进程可能共享一个物理内存地址,但这可能对应于每个进程地址空间中的不同地址。这意味着在设计将存在于共享内存中的对象时,您必须确保它们使用偏移量或索引而不是纯指针。

共享内存会产生同步问题,这可能会导致无穷无尽的问题,所以除非你真的不得不这样做,否则我会建议你优先使用管道而不是共享内存。

关于c++ - 在共享内存中分配对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6411068/

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