跨进程的指向内存映射文件的指针是否应该一致?

时间:2019-07-08 05:11:42

标签: winapi shared-memory memory-mapped-files

我正在做一些需要进程间通信的工作。我在一个过程中使用CreateFileMapping(使用Windows API)创建了一个内存映射文件。在另一个过程中,我使用OpenFileMapping和MapViewOfFile访问(据说)相同的数据。我发现这些数据的地址在每个过程中都不相同,这是预期的还是我做错了什么?

1 个答案:

答案 0 :(得分:1)

这完全是正常现象。

不同的进程具有不同的地址空间。一个进程中的指针在另一进程中无效。重要的是每个进程都将获得指向共享映射对象的本地有效指针。当每个进程要访问共享映射对象内部的数据时,需要使用相对于每个进程的指针和地址来完成访问。

这在Microsoft自己的文档中有更详细的介绍:File Mapping