2014-11-03 40 views
2

2D陣列內存釋放我分配使用新的2D陣列這樣與刪除[]用於與一個尺寸恆定

int (*arr)[2] = new int[x][2]; 

x被在運行時計算。

我應該如何取消分配這個內存?我試過

delete [] *arr[0]; 
delete [] *arr[1]; 

但是,valgrind說他們是13個分配和14個釋放。

+1

這是一門課,我們沒有介紹矢量。我希望我們可以使用它們。 – 2014-11-03 01:15:58

+2

「使用矢量」並不是對字面上每個指針相關問題的回答。 – Barry 2014-11-03 01:19:25

+0

@巴里只有99%.. :) – 2014-11-03 01:20:55

回答

5

您可以使用一個new[],所以你應該使用一個delete[]

delete[] arr; 

delete[]形式適用於任何new[]; new T[x]new T[x][2]或其他任何東西都沒有單獨的情況。像new T[x][2]這樣的表達式實際上是單個數組new,其中數組元素具有類型「2T的數組」。

+0

謝謝你清理! – 2014-11-03 21:10:39