3

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

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

谢谢。

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

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

为了在主进程重新启动后恢复结构,我将向所有指针添加一个固定数量,以反映由MapViewOfFile.

4

1 回答 1

1

感谢评论的人。

回答我自己的问题:

我放弃了使共享内存成为堆,我只是将结构的固定快照保存到由另一个进程分配的共享内存中CreateFileMapping。当进程重新启动时,我只是做相反的事情,使用OpenFileMappingand MapViewOfFile

于 2012-10-17T01:28:42.700 回答