gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:06:10 27 4
gpt4 key购买 nike

我正在尝试使用 Boost circular_buffer 和进程间库在共享内存中创建一个循环缓冲区。我编译并运行了 Interprocess documentation 中给出的示例用于在共享内存中毫无问题地创建 vector 。但是,当我修改它以将 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

最佳答案

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

还有什么建议吗?

关于c++ - 使用 Boost 在共享内存中创建循环缓冲区时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2331613/

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