gpt4 book ai didi

winapi - (Win32) 堆在进程之间共享

转载 作者:行者123 更新时间:2023-12-05 06:46:59 29 4
gpt4 key购买 nike

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

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

谢谢。

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

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

为了在主进程重新启动后恢复结构,我会向所有指针添加固定数量,以反射(reflect) MapViewOfFile 返回的映射 View 的不同来源。

最佳答案

感谢评论的人。

回答我自己的问题:

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

关于winapi - (Win32) 堆在进程之间共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12761938/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com