我已經爲學習目的創建了自己的雙鏈表實現。我正在做一些測試以確保內存正確解除分配。在main.cpp
,我有以下幾點:內存釋放雙向鏈表C++
list<int> pointer;
int *x = new int(1);
int *y = new int(2);
int *z = new int(3);
pointer.insertBack(*x);
pointer.insertBack(*y);
pointer.insertBack(*z);
pointer.printForward();
pointer.printReverse();
顯然內存正在因爲調用new
的分配。在所有這些代碼之後,我是否必須調用delete自己,或者列表的析構函數是否應該處理內存釋放?如果我使用int
而不是指針,則不會發現內存泄漏。我正在使用valgrind來檢查內存泄漏。
不是valgrind告訴你嗎? – chris
該列表永遠不會看到您的指針,因爲您仍然將整數(例如insertBack(* x))傳遞給insertBack()而不是指針(例如,insertBack(x),它不會編譯,除非您使用列表比列表)。所以列表對象絕對不會刪除你分配的內存。 –