当前位置:  开发笔记 > 编程语言 > 正文

解除分配不会释放Windows/C++应用程序中的内存

如何解决《解除分配不会释放Windows/C++应用程序中的内存》经验,为你挑选了2个好方法。

我的Windows/C++应用程序在内存中为操作员分配~1Gb的数据new并处理这些数据.处理完数据后删除.

我注意到如果我在没有退出应用程序的情况下再次运行处理,则第二次调用运算符new来分配〜1Gb的数据失败.

我希望Windows能够提供内存.使用其他一些Win32调用等可以更好地管理吗?



1> schnaader..:

我不认为这是一个Windows问题.检查您是否正确使用了删除或删除[].如果您发布分配/释放内存的代码,也许会有所帮助.



2> Diomidis Spi..:

在大多数运行时环境中,从操作系统分配给应用程序的内存仍保留在应用程序中,并且很少返回到操作系统.释放内存块允许您从应用程序中重用该块,但不会将其释放到操作系统以使其可供其他应用程序使用.

Microsoft的C运行时库尝试通过调用_heapmin_region调用_heap_free_region或_free_partial_region将内存返回给操作系统,调用VirtualFree将数据释放到操作系统.但是,如果相应区域中的整个页面不为空,则不会释放它们.其常见原因是C++容器的簿记信息和存储缓存.

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有