我正在围绕 boost::interprocess 的向量容器编写一个简单的包装器,以在 IPC 的共享内存 (shm) 中实现一个环形缓冲区。假设这是一个在 shmbuf
中创建的实例。RingBuffer
现在,在它的 ctor 中,buf
它本身分配了一个私有boost::interprocess::vector
数据成员来存储值,例如m_data
. 我的问题是:我认为m_data
也应该在共享内存中创建。但这是必需品吗?
如果buf
它是在 shm 本身中创建的,会分配标准内存,即使用new
. 这是否在调用进程的堆上分配?我不认为buf
是在那里分配的,所以为什么不在进程堆上的对象私有的数据成员会在那里分配。我很困惑。