我的Windows/C++应用程序在内存中为操作员分配~1Gb的数据new
并处理这些数据.处理完数据后删除.
我注意到如果我在没有退出应用程序的情况下再次运行处理,则第二次调用运算符new
来分配〜1Gb的数据失败.
我希望Windows能够提供内存.使用其他一些Win32调用等可以更好地管理吗?
我不认为这是一个Windows问题.检查您是否正确使用了删除或删除[].如果您发布分配/释放内存的代码,也许会有所帮助.
在大多数运行时环境中,从操作系统分配给应用程序的内存仍保留在应用程序中,并且很少返回到操作系统.释放内存块允许您从应用程序中重用该块,但不会将其释放到操作系统以使其可供其他应用程序使用.
Microsoft的C运行时库尝试通过调用_heapmin_region调用_heap_free_region或_free_partial_region将内存返回给操作系统,调用VirtualFree将数据释放到操作系统.但是,如果相应区域中的整个页面不为空,则不会释放它们.其常见原因是C++容器的簿记信息和存储缓存.