【发布时间】:2013-03-30 05:51:29
【问题描述】:
我试图修改一些以前的代码,但发现程序使用的内存在运行时不断增加。所以可能存在内存泄漏。我的代码的主要部分包含以下循环
CEnergymulti* ener;
double potential;
double pottemp;
potential=0.0;
pottemp=0.0;
for(int i=0;i<nbin;i++)
{
ener = new CEnergymulti(np1,molfnames1,idiel);
pottemp=ener->calculatePot(ener->m_mols);
potential+=pottemp;
delete ener;
}
其中“CEnergymulti”是一个类。我怀疑重复使用 new 和 delete 可能会导致内存泄漏问题,因为如果我只对循环内的代码执行一次运行,我没有看到运行期间内存增加。如果确实是 new 和 delete 的问题,我该如何纠正?谢谢。
【问题讨论】:
-
我没有看到内存泄漏。你怎么确定你在泄漏内存?在您的代码上运行类似
valgrind的内容。 -
也许
CEnergymulti的析构函数没有完全释放它的内存。也许calculatePot泄漏内存。 Tushar 的建议很棒:valgrind是一个理想的工具。 -
在这段特定的代码中,没有内存泄漏,因为您在循环中分配并在循环中解除分配。因此,无论分配的内存在下一次迭代之前都被释放。 nneonneo 的权利可能是您需要检查 calculatePort 部分。
标签: c++ memory-leaks