我尝试修改一些以前的代码,但发现程序使用的内存在运行时不断增加。因此可能存在内存泄漏。我的代码的主要部分包含以下循环
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的问题,我该如何纠正?感谢。
答案 0 :(得分:1)
您显示的代码中没有内存泄漏(除非CEnergymulti
有一个严重实现的析构函数)但是没有令人信服的理由使用动态分配的对象开始。为什么不简单地使用:
CEnergymulti obj;
pottemp=obj.calculatePot(obj.m_mols);
potential+=pottemp;
放弃不受欢迎的new
和delete
,您不必再为手动记忆管理而烦恼。