内存泄漏与新和删除

时间:2013-03-30 05:51:29

标签: c++ memory-leaks

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

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

1 个答案:

答案 0 :(得分:1)

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

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

放弃不受欢迎的newdelete,您不必再为手动记忆管理而烦恼。