gpt4 book ai didi

c++ - 使用 [] 括号访问 shared_memory 中的 std::vector 值

转载 作者:太空宇宙 更新时间:2023-11-04 12:20:30 27 4
gpt4 key购买 nike

我正在使用 boost shared_memory_manager 模板在共享内存中创建 vector :

using namespace boost::interprocess;

typedef allocator<nIcon*, managed_shared_memory::segment_manager> ShmemAllocator;


typedef std::vector<nIcon*, ShmemAllocator> icons_v;
if(already_running)
{

managed_shared_memory segment(create_only, "MySharedMemory", 65536);
const ShmemAllocator alloc_inst (segment.get_segment_manager());
icons = segment.construct<icons_v>("icons_v")(alloc_inst);
} else {
managed_shared_memory segment(open_only, "MySharedMemory");
icons = segment.find<icons_v>("MyVector").first;
}

现在,要访问 vector ,我不能使用标准 [] 括号,因为编译器说使用 .或 -> 是错误的。我如何访问 vector 项?

最佳答案

您通常不应混合使用容器和共享内存。如果使用容器的两个不同实现构建的进程试图相互协作,那将是非常危险的。

您通常应该选择仅使用原生类型。

关于c++ - 使用 [] 括号访问 shared_memory 中的 std::vector 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5354143/

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