1

我正在学习 boost::interprocess 。boost 文档中显示的示例描述了如何在共享内存中创建容器的两种方法:通过使用完全在共享内存中构建它,myManagedSharedMemSegement.construct<..>(..)(..)或者通过使用自定义分配器在本地内存中创建容器,该分配器将内部数据放入共享内存中。如示例中所示,此字符串数据将存在于共享内存中,但字符串本身不会:

using namespace boost::interprocess;

typedef allocator<char, managed_shared_memory::segment_manager>
      CharAllocator;
typedef basic_string<char, std::char_traits<char>, CharAllocator>
      MyShmString;

managed_shared_memory shm(create_only, "MySharedMemory", 10000);

CharAllocator charallocator  (shm.get_segment_manager());

MyShmString mystring(charallocator);
mystring = "this is my text";

到目前为止我无法弄清楚的是如何使用来自共享内存的字符串数据在另一个进程中创建一个字符串对象。有没有合理的方法可以做到这一点,还是建议将整个容器放在共享内存中?

4

0 回答 0