我使用new这样的
分配了一个2D数组 int (*arr)[2] = new int[x][2];
x在运行时计算。
我应该如何释放这段记忆?我试过了
delete [] *arr[0];
delete [] *arr[1];
然而,valgrind说他们有13个分配和14个自由。
答案 0 :(得分:5)
您使用一个new[]
,因此您应该使用一个delete[]
:
delete[] arr;
delete[]
表格适用于任何new[]
; new T[x]
与new T[x][2]
或其他任何内容都没有单独的案例。类似new T[x][2]
的表达式实际上是单个数组new
,其中数组元素的类型为“2 T的数组”。