堆内存何时实际释放?

时间:2012-01-26 20:18:20

标签: c++ windows memory-management

我正在使用new分配内存,当我在我的一个方法和析构函数中接收数据时,我将使用delete释放所有已分配的内存。

然而,在释放内存后,从任务管理器中,当我查看进程选项卡下的mem使用情况时,内存使用情况仍然保持不变。它没有给人留下释放内存的印象。

那么,内存何时实际发布?找出进程使用的实际内存的最佳方法是什么。

由于

2 个答案:

答案 0 :(得分:2)

在大多数情况下,在应用程序运行时,它永远不会返回到操作系统。当然,之后,操作系统会恢复所有资源。

[评论后正确地指出'从来没有'很长时间......]

答案 1 :(得分:0)

操作系统为您的应用程序分配默认堆。在进程初始化期间分配此堆。因此,新的和删除不会影响您在任务管理器中看到的栏。

但是,如果您尝试初始化一个大缓冲区并且分配的堆不够,操作系统将为您的应用程序分配更多内存 - 这应该反映在任务管理器中......