我有一个应用程序可以执行一些蒙特卡罗模拟。对于每次运行,将一个12MB的文件加载到std::vector<MyData>
中。加载和存储数据的对象由boost::shared_ptr
引用,当运行完成时,该对象将从堆栈中删除。
我看到应用程序的内存使用量在Windows任务管理器中增长到大约1GB(在80-90运行之后),但它通常会下降到50MB(并在下一次运行时开始增长)。所以我想知道这是内存泄漏还是正常行为。应该/我可以做任何事情来明确释放向量中的内存或其他内容吗?
感谢提示,
菲利普
答案 0 :(得分:1)
感谢大家的提示。事实证明,它实际上是内存泄漏导致我的AbstractSensorDataSource类缺少虚拟析构函数,它正在存储加载的数据。
答案 1 :(得分:0)
实际上这听起来是正确的。
90 * 12 = 1080 MB = 1.0546875 GB
你应该考虑使用另一个分配器或减少轮数
如果要明确释放内存,则应使用常规指针或调用shared_ptr的reset()
函数。
正如其他人提到的那样,使用分析器来查看另一个分配器是否确实对内存分配产生了积极影响。