私の問題は次のとおりです。
プログラムが共有メモリ マップに再アタッチできないのはなぜですか?
私は自分のプログラムで次のことを行います (これは私のプログラムのほんの一部ですが、boost ページの例を使用する方が簡単かもしれません):
初めて、初期化します。
m_sharedMemory = new managed_shared_memory(create_only, segmentName.c_str() , 1000000);
m_hashMap = m_sharedMemory->construct<MyHashMap>(segmentName.c_str())( 3, boost::hash<std::string>(), std::equal_to<std::string>() , m_sharedMemory->get_allocator<ValueType>());
2回目の「貼り直し」
m_sharedMemory = new managed_shared_memory(open_only, segmentName.c_str());
m_hashMap = m_sharedMemory->find<MyHashMap>(segmentName.c_str()).first;
ここでの私の問題は、2つのアイテムが挿入された場合、findから返されたオブジェクトの.second呼び出しが実際には間違っている「1」を表示することです.2を表示するはずです。プログラムがクラッシュします。誰かがすでにこれを行っていますか。
最初のプログラムの実行で同じことを行うと、ハッシュから値を検索しても問題ありません。これは、プログラムが初期化され、後でプログラムが再起動され、アタッチが実行され、以前に挿入された値を取得しようとした場合にのみ発生します。
助けてくれてありがとう。