我正在使用qt创建器,并且遇到内存泄漏问题。我已经阅读了一些关于动态内存分配的文章,但是从我看到的内容来看,我无法理解为什么我的函数正在积累内存。使用std :: swap在C++函数中发生内存泄漏
我完全相信我已经精确定位引起该问题的函数:
void CSimWindow::cloneNet(int origin, int destination)
int newNumSensors = netVector[origin].getNumSensors();
int newNumActuators = netVector[origin].getNumActuators();
int newNumNeurons = netVector[origin].getNumNeurons();
CNet newNet(newNumNeurons, 0);
newNet.setNumSensors(newNumSensors);
newNet.setNumActuators(newNumActuators);
for (int i = 0; i < netVector[origin].getNumNeurons(); i++)
{
...
}
std::swap(newNet, netVector[destination]);
}
我很是新手,但据我了解,在函数内部创建的对象应该被销毁的时候都结束了。如果有人可以告诉我为什么这个函数导致内存泄漏,我提前感谢你。
** a。** CNet是如何定义的? ** b。**如何检测内存泄漏** c。**如果要立即删除原件,有什么用途来克隆网络(是否有任何状态您明确不复制?) – sehe
您如果您从未分配内存,则无法泄漏:泄漏出现在您未向我们显示的代码中。正如sehe所说,CNet是可疑的,但主要是因为它在我们的脸上。 – Casey