テストを行ったところ、C ++/CLI実行可能ファイルでboost::interprocess::shared_memory_objectを問題なく作成および削除できました。C ++ / CLI dllプラグインでは、boost :: interprocess :: shared_memory_objectしか作成できませんが、削除に失敗します。削除時にファイルが存在することを確認しました。このファイルは、「20110606204418.125000」という名前のサブフォルダーのboost::interprocessフォルダーに存在します。メモリは他のプロセスによってマップされていません。原因となる可能性のあるアイデアはありますか?最初は、プロジェクトがdllであり、CLRをターゲットにしていることと関係があるのではないかと思っていましたが、正直なところわかりません。編集:削除コードは作成コードとは異なるスレッドによって呼び出されます-これは許可されていませんか?
1 に答える
0
デバッグ中に、boost :: interprocess :: shared_memory_object :: remove内で削除されるファイルパスが、boost :: interprocess::shared_memory_objectコンストラクターによって作成されたファイルとは異なることに気付きました。削除されるパスはのルートを指します。実際に作成されたファイルが「boost_interprocess/20110606204418.125000」フォルダにある間、「boost_interprocess」フォルダ。そこで、ブーストするバグを報告しました。彼らがそれについて何をしているのかを見ていきます。
于 2011-06-07T16:19:53.657 に答える