gpt4 book ai didi

c++ - 在 Win32 中,HeapFree 不归还内存

转载 作者:太空宇宙 更新时间:2023-11-04 15:52:12 25 4
gpt4 key购买 nike

我已经在 Win32 c++ 中测试过 HeapAlloc 和 HeapFree。

我已经使用 HeapCreate(0,0,0) 创建了私有(private)堆。

接下来,我使用 HeapAlloc(_heaphandle, 0, 1024*100) 分配了 100KB。

进程内存增加了大约 100KB,但有一些开销。我已经用“Windows 工作管理器的进程选项卡”检查了这个进程内存。

我有几次分配了 100KB。所以,我得到了以下结果。

process memory : 1,312KB  committed:3472, uncommitted:258048, alloced: 0

process memory : 1,420Kb committed:7544, uncommitted:151552, alloced: 102400

process memory : 1,524Kb committed:11616,uncommitted:45056, alloced: 204800

process memory : 1,632KB ............. alloced: 307200

process memory : 1,736KB ............. alloced: 409600

接下来,我使用 HeapFree(_heaphandle, 0, pointer) 释放了内存。

但是,进程内存不返回内存。我真的很好奇进程内存何时释放。

我得到了以下结果:

process memory : 1,736KB  committed:23744, uncommitted:876544, alloced: 409600

process memory : 1,736Kb committed:126152,uncommitted:876544, alloced: 307200

process memory : 1,736Kb committed:228592,uncommitted:876544, alloced: 204800

最后,我用 HeapDestroy(heaphandle) 销毁了私有(private)堆。然后,释放所有堆内存。

进程内存变为初始值 1,312KB。

如果我使用很多内存,我担心内存不足。

最佳答案

您不会因内存力不足而受苦。当您执行 HeapFree 时,HeapManager 可能实际上不会将其释放回操作系统,并可能保留它以供将来分配。因此,当您下次执行 HeapAlloc 时,它可以从该内存中进行分配。

关于c++ - 在 Win32 中,HeapFree 不归还内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6119880/

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