我试图修改一些以前的代码,但发现程序使用的内存在运行时不断增加。所以可能会有内存泄漏。我的代码的主要部分包含以下循环内存泄漏与新的和删除
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可能会导致内存泄漏问题,因为如果我只对循环内的代码执行单次运行,则在运行期间没有看到内存增加。如果确实是新的和删除的问题,我该如何解决这个问题?谢谢。
我没有看到内存泄漏。你怎么确定你在泄漏内存?在你的代码上运行'valgrind'。 – Tushar
也许'CEnergymulti'的析构函数没有完全释放它的内存。也许'calculatePot'泄漏内存。图沙尔的建议很棒:“valgrind”是一个理想的工具。 – nneonneo
在这段特定的代码中,没有内存泄漏,因为您正在循环中分配并在循环中解除分配。因此,在下一次迭代之前分配的内存将被释放。 nneonneo的权利可能是你需要检查calculatePort部分。 – JackSparrow