0

我试图修改一些以前的代码,但发现程序使用的内存在运行时不断增加。所以可能存在内存泄漏。我的代码的主要部分包含以下循环

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 的问题,我该如何纠正?谢谢。

4

1 回答 1

1

您显示的代码中没有内存泄漏(除非有一个糟糕的析构函数实现CEnergymulti)但是没有令人信服的理由使用动态分配的对象开始。为什么不简单地使用:

CEnergymulti obj;
pottemp=obj.calculatePot(obj.m_mols);
potential+=pottemp;

丢弃不需要的东西newdelete您不必再为手动内存管理而烦恼。

于 2013-03-30T05:54:18.670 回答