ブースト::インタープロセスについて学んでいます。ブーストのドキュメントに示されている例では、共有メモリ内にコンテナを作成する 2 つの方法が説明されています: を使用して共有メモリ内にコンテナを完全に構築するか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";
これまでのところ、共有メモリからこの文字列データを使用して別のプロセスで文字列オブジェクトを作成する方法がわかりませんでした。これを行う合理的な方法はありますか、それともコンテナ全体を共有メモリに置くことをお勧めしますか?