我做了一些测试,我能够在没有问题的情况下在C ++ / CLI可执行文件中创建和删除boost :: interprocess :: shared_memory_object。在C ++ / CLI DLL插件中,我只能创建boost :: interprocess :: shared_memory_object,但删除失败。我确认该文件在删除时存在 - 它存在于名为“20110606204418.125000”的子文件夹的boost :: interprocess文件夹中。内存尚未被任何其他进程映射。任何想法可能是什么原因?一开始我觉得它可能与项目是dll并针对CLR有关,但老实说我不知道。 编辑:删除代码由与创建代码不同的线程调用 - 这是不允许的吗?
答案 0 :(得分:0)
在调试期间,我注意到要在boost :: interprocess :: shared_memory_object :: remove中删除的文件路径与boost :: interprocess :: shared_memory_object构造函数创建的文件不同 - 要删除的路径指向“boost_interprocess”文件夹的根目录,而实际创建的文件位于“boost_interprocess / 20110606204418.125000”文件夹中。所以我报告了一个提升的bug。我们将看到他们对此做了什么。