C++ C+的内存使用+;Windows上的应用程序
我有一个做蒙特卡罗模拟的应用程序。对于每次运行,都会将一个12MB的文件加载到C++ C+的内存使用+;Windows上的应用程序,c++,windows,memory-leaks,C++,Windows,Memory Leaks,我有一个做蒙特卡罗模拟的应用程序。对于每次运行,都会将一个12MB的文件加载到std::vector中。加载和存储数据的对象由一个boost::shared_ptr引用,该对象在运行完成时从堆栈中删除 在Windows任务管理器中,我看到应用程序的内存使用量增长到大约1GB(在80-90次运行之后),但随后通常会下降到50MB(并开始为下一次运行而增长)。所以我想知道这是内存泄漏还是正常行为。我应该/可以做些什么来显式地释放向量中的内存或其他什么吗 谢谢你的提示 菲利普这听起来确实是对的 90
std::vector
中。加载和存储数据的对象由一个boost::shared_ptr
引用,该对象在运行完成时从堆栈中删除
在Windows任务管理器中,我看到应用程序的内存使用量增长到大约1GB(在80-90次运行之后),但随后通常会下降到50MB(并开始为下一次运行而增长)。所以我想知道这是内存泄漏还是正常行为。我应该/可以做些什么来显式地释放向量中的内存或其他什么吗
谢谢你的提示
菲利普这听起来确实是对的
90 * 12 = 1080 MB = 1.0546875 GB
<>你应该考虑使用另一个分配器或减少回合数。
如果要明确释放内存,应使用常规指针或调用shared_ptr的reset()
函数。使用探查器,正如其他人所提到的,查看其他分配器是否确实对内存分配有积极影响。谢谢大家的提示。事实上,它实际上是一个内存泄漏,导致我的ActudioStaseDealSoCuCE类缺少虚拟析构函数,它存储了加载的数据。我不知道,但也许你应该考虑使用另一个分配器,看看会发生什么。囤积就是一个很好的例子。()@the_-drow-你真的会在不完全了解内存使用情况的情况下更换堆管理器吗?@Steve:不,不会。但是使用和不使用分析可以让您了解到底发生了什么。这是唯一可能的原因-MyData的析构函数有问题:)std::vector中没有内存泄漏