如何在c ++中删除此2D数组

Anu*_*bha 5 c++ pointers memory-management

在简单的一维数组中:

node *nodes =  new node[MAX_NODES];
Run Code Online (Sandbox Code Playgroud)

删除:

delete [] nodes;
Run Code Online (Sandbox Code Playgroud)

删除数组中分配的所有节点.

但在这种情况下:

float (*buildingArray)[3] = new float[10][3];
Run Code Online (Sandbox Code Playgroud)

这个语句是否buildingArray包含3个浮点指针的单维数组?这是解除分配线:

delete[] buildingArray;
Run Code Online (Sandbox Code Playgroud)

以上是否释放delete了数组,但我怀疑它是否会删除它的引用?

Alo*_*ave 16

上面的取消分配是否删除了数组?

是的,它确实.

只需遵循以下规则:

你需要打电话或分别打电话deletedelete []打电话.newnew []


如果你有一个指针数组,其中每个索引都分配了动态内存,你需要显式循环它并显式释放每个数组元素.


另外,您最好使用std::vector或不使用std::array动态分配的数组.