(Win32)进程之间共享的堆

时间:2012-10-06 17:11:42

标签: winapi heap shared-memory

是否可以创建在进程之间共享的内存池(例如,在Win32中从CreateFileMappingINVALID_HANDLE_VALUE共享)然后将该块内存用作堆?

我希望new / delete运算符(或malloc / free)从该块中分配/释放内存(并对其执行常规堆管理) )。

感谢。

编辑:我真正的问题很简单:现在我使用new运算符来正常分配各种大型系列结构,但我希望这些结构在进程关闭后保持不变。所以我想创建另一个进程,它的功能几乎只是在主进程关闭时保存内存。

为此,我将在辅助进程中使用CreateFileMapping创建一块共享内存,并在主进程中告诉用于分配结构的new / delete使用该块而不是进程的堆。

要在重新启动主进程后恢复结构,我会向所有指针添加固定数量,反映MapViewOfFile返回的映射视图的不同来源。

1 个答案:

答案 0 :(得分:1)

感谢评论的人们。

回答我自己的问题:

我放弃了将共享内存作为堆,我只是将结构的固定快照保存到由CreateFileMapping的其他进程分配的共享内存中。我只是在使用OpenFileMappingMapViewOfFile重新启动流程时执行相反的操作。