【发布时间】:2010-03-17 02:44:10
【问题描述】:
我正在围绕 boost::interprocess 的向量容器编写一个简单的包装器,以在 IPC 的共享内存 (shm) 中实现一个环形缓冲区。假设buf 是在shm 中创建的RingBuffer 的一个实例。现在,在其 ctor 中,buf 本身分配了一个私有的 boost::interprocess::vector 数据成员来存储值,例如m_data。我的问题是:我认为m_data 也应该在共享内存中创建。但这是必需品吗?
如果在 shm 中创建的 buf 分配标准内存,即使用 new,会发生什么情况。这是否在调用进程的堆上分配?我不认为buf 是在那里分配的,那么为什么不在进程堆上的对象私有的数据成员会在那里分配。我很困惑。
【问题讨论】:
标签: c++ shared-memory