0

我做了一些测试,我能够在 C++/CLI 可执行文件中创建和删除 boost::interprocess::shared_memory_object 没有问题。在 C++/CLI dll 插件中,我只能创建 boost::interprocess::shared_memory_object 但删除失败。我验证了该文件在删除时存在 - 它存在于 boost::interprocess 文件夹中名为“20110606204418.125000”的子文件夹中。内存尚未被任何其他进程映射。任何想法可能是什么原因?一开始我认为这可能与作为 dll 并针对 CLR 的项目有关,但老实说我不知道​​。编辑:删除代码由与创建代码不同的线程调用 - 这是不允许的吗?

4

1 回答 1

0

在调试期间,我注意到要在 boost::interprocess::shared_memory_object::remove 中删除的文件路径与 boost::interprocess::shared_memory_object 构造函数创建的文件不同 - 要删除的路径指向“boost_interprocess”文件夹,而实际创建的文件位于“boost_interprocess/20110606204418.125000”文件夹中。所以我报告了一个要提升的错误。我们将看到他们对此做了什么。

于 2011-06-07T16:19:53.657 回答