C++ C+的内存使用+;Windows上的应用程序

C++ C+的内存使用+;Windows上的应用程序,c++,windows,memory-leaks,C++,Windows,Memory Leaks,我有一个做蒙特卡罗模拟的应用程序。对于每次运行,都会将一个12MB的文件加载到std::vector中。加载和存储数据的对象由一个boost::shared_ptr引用,该对象在运行完成时从堆栈中删除 在Windows任务管理器中,我看到应用程序的内存使用量增长到大约1GB(在80-90次运行之后),但随后通常会下降到50MB(并开始为下一次运行而增长)。所以我想知道这是内存泄漏还是正常行为。我应该/可以做些什么来显式地释放向量中的内存或其他什么吗 谢谢你的提示 菲利普这听起来确实是对的 90

我有一个做蒙特卡罗模拟的应用程序。对于每次运行,都会将一个12MB的文件加载到
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中没有内存泄漏