繁体   English   中英

使用Boost在共享内存中创建循环缓冲区时出现问题

[英]Problem creating a circular buffer in shared memory using Boost

我试图使用Boost circular_buffer和Interprocess库在共享内存中创建循环缓冲区。 我编译并运行了Interprocess文档中给出的示例,用于在共享内存中创建向量,没有任何问题。 但是,当我修改它以使用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中列出的/boost/interprocess/containers ,即它与Interprocess不兼容?

谢谢,

C

我在boost用户论坛上问了同样的问题,建议的解决方案是使用-DBOOST_CB_DISABLE_DEBUG或-DNDEBUG标志,因为circular_buffer依赖于原始指针来支持调试。

还有其他建议吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM