2
2D陣列內存釋放我分配使用新的2D陣列這樣與刪除[]用於與一個尺寸恆定
int (*arr)[2] = new int[x][2];
x被在運行時計算。
我應該如何取消分配這個內存?我試過
delete [] *arr[0];
delete [] *arr[1];
但是,valgrind說他們是13個分配和14個釋放。
2D陣列內存釋放我分配使用新的2D陣列這樣與刪除[]用於與一個尺寸恆定
int (*arr)[2] = new int[x][2];
x被在運行時計算。
我應該如何取消分配這個內存?我試過
delete [] *arr[0];
delete [] *arr[1];
但是,valgrind說他們是13個分配和14個釋放。
您可以使用一個new[]
,所以你應該使用一個delete[]
:
delete[] arr;
的delete[]
形式適用於任何new[]
; new T[x]
和new T[x][2]
或其他任何東西都沒有單獨的情況。像new T[x][2]
這樣的表達式實際上是單個數組new
,其中數組元素具有類型「2T的數組」。
謝謝你清理! – 2014-11-03 21:10:39
這是一門課,我們沒有介紹矢量。我希望我們可以使用它們。 – 2014-11-03 01:15:58
「使用矢量」並不是對字面上每個指針相關問題的回答。 – Barry 2014-11-03 01:19:25
@巴里只有99%.. :) – 2014-11-03 01:20:55