我已经阅读了有关Memory-Mapped Files的文章和有关CreateFileMapping的示例。
我的问题是:我可以使用内存映射文件在两个进程之间传递指向结构或对象的指针吗?
由于有一些答案是可能的,因此我想通过以下结构:
// First Process
struct OtherStruct{};
struct MyStruct
{
unsigned long handleObject;
unsigned long *phandleObject;
OtherStruct someData;
OtherStruct *pData;
}
MyStruct dataSend = { ... };
WriteToMappedFile(data);
// Second Process
MyStruct dataReceived = ReadFromMappedFile()
最佳答案
正如其他答案所述,您必须依赖于内存映射区域的地址相等,或者必须从指针中的绝对地址转移到相对寻址。
我最近偶然发现的一种可能的实现是Boost库中的offset_ptr,它似乎非常适合您的用例。