我正在使用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