我已經嘗試了一千次以找到該死的內存泄漏在這個片段,但我只是悲慘地失敗......我正在學習內存分配和這些東西,我是從來沒有能夠做一個程序,將完全釋放它的內存呢......C++應用程序中的內存泄漏
我打電話給for循環來分配140 Contato_s結構,並把它們放到議程std :: list。然後我打電話給另一個for循環刪除使用RemoverContato和相應代碼的所有140個聯繫人... Windows不報告free'd內存的單個Kb!
在此先感謝:)!
- 編輯
好了,這就是我如何試圖破壞聯繫人:
for(int i=0; i<140; ++i)
{
if(RemoverContato(1+i) == 0)
std::cout << "Fail removing contact " << i << std::endl;
else
std::cout << "Contact " << i << " removed" << std::endl;
}
(OFC我總是得到「跟X刪除」,而不是失敗的那一部分,所以聯繫正在被發現,理論上)
那麼,你是否爲列表中的每個元素調用'RemoverContato'?如果你不顯示你如何調用這個代碼,那麼我們可以告訴你的不多(除了'std :: list'而不是'std :: list ''是不必要的邊界愚蠢的)。 –
ildjarn
你需要展示你如何調用'RemoverContato'。 9 – Marlon
你所說的一切都表明內存泄露了。物理內存由操作系統管理,並且在其他地方需要時可隨時重新使用。虛擬內存是每個進程的,所以不能被「返回」。我認爲錯誤只是在你的期望 - 期待一個進程將虛擬內存返回到系統(這是沒有意義的,因爲虛擬內存是每個進程)。 –