我正在尝试使用Boost circular_buffer
和Interprocess库在共享内存中创建循环缓冲区。我编译并运行了Interprocess documentation中给出的示例,用于在共享内存中创建向量,没有任何问题。但是,当我修改它以使用Boost circular_buffer时:
int main(int argc, char *argv[])
{
managed_shared_memory segment(create_only, "MySharedMemory", 65536);
const ShmemAllocator alloc_inst (segment.get_segment_manager());
MyCircBuffer *myCircBuf = segment.construct<MyCircBuffer>("MyCircBuffer")(alloc_inst);
return 0;
}
我收到编译错误(由segment.construct()
引起)。知道我做错了什么吗?是因为circular_buffer
不是/boost/interprocess/containers
中列出的容器之一,即它与Interprocess不兼容?
谢谢,
C
答案 0 :(得分:3)
我在boost用户论坛上问了同样的问题,建议的解决方案是使用-DBOOST_CB_DISABLE_DEBUG或-DNDEBUG标志,因为circular_buffer
依赖于原始指针来支持调试。
还有其他建议吗?