指向内存映射文件的指针应该在进程间保持一致吗?

Should pointers to memory mapped files be consistent across processes?

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

这完全是意料之中的正常行为。

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

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