堆内存实际何时释放
When does the heap memory actually get released?
我使用new as分配内存,当我在其中一个方法和析构函数中接收到数据时,我将使用delete释放所有分配的内存。
然而,在从任务管理器释放内存后,当我在进程选项卡下查看内存使用情况时,内存使用情况仍然保持不变。这不会给人留下记忆被释放的印象。
那么,内存什么时候真正被释放?找出进程所使用的实际内存的最佳方法是什么。
感谢
在大多数情况下,当应用程序运行时,它永远不会返回给操作系统。当然,之后,操作系统会恢复所有资源。
[在评论正确指出"永远"是一段很长的时间后编辑…]
操作系统为应用程序分配一个默认堆。此堆是在进程初始化期间分配的。因此,新的和删除的不会影响您在任务管理器中看到的栏。
然而,如果您试图初始化一个大缓冲区,但分配的堆不够,操作系统将为您的应用程序分配更多内存,这应该反映在任务管理器中。。。
相关文章:
- 释放错误后堆使用
- 何时在引用或唯一指针上使用移动语义
- G锁定铸造到基础上会释放模拟行为
- 何时提供默认参数作为模板参数
- 在将变量声明为引用时,堆在释放后使用
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 向量中的数据何时释放
- C++何时使用 delete[] 并正确释放内存?
- RAII 套接字:何时释放(关闭)
- 如果/何时回收释放的堆内存
- C++自动内存:何时释放
- 如果您使用new来分配空间,您必须在何时释放它
- std::shared_ptr何时释放其对象
- 堆内存实际何时释放
- 何时使用alloca为类成员释放内存
- 何时释放内存
- 如何检测键何时被释放(SDL 2.0)
- 在linux上复制文件到usb,如何以编程方式知道何时文件被提交和usb可以被释放
- 获取唯一编号并知道它们何时被释放
- 智能指针如何知道何时释放程序崩溃时的资源