如何在Windows中实现共享内存?

时间:2015-11-02 11:55:56

标签: c++ windows shared-memory

内存分配在哪里?哪个地址空间是新内存?

1 个答案:

答案 0 :(得分:1)

Windows中有两种常见的共享内存类型。

一种是当多个进程将同一文件映射到内存时。这显然发生在可执行文件和库中,但它也可能出现在数据文件中。基本上,进程共享此内存的事实几乎没有影响它的工作方式。它通过相同的请求分页实现,如果单个进程映射它就会发生。

另一种类型是共享的匿名映射。这些可以通过调用CreateFileMapping函数来创建,而无需指定要映射的有效文件。这与分配内存的行为相同,只是多个进程可以访问它。就像正常的内存使用情况一样,如果没有访问它,或者为了其他目的需要RAM,它可以被分页到磁盘。

对于共享的匿名映射,内核为进程提供了内存句柄,以便进程在想要将其映射到内存空间时可以引用它。