在c ++中释放多维数组

时间:2012-10-18 10:12:49

标签: c++ multidimensional-array

我如何破坏任意大小,尺寸和类型的动态数组? delete []会自动降低二维数组的级别,还是只删除第一级指针,这样程序需要手动迭代每个数组级别?

理想情况下,我需要一个命令(用于模板类),它会破坏一到四维数组。如果有办法检查数组的维数,它也可以工作。

我正在使用dymanic数组,例如double * ar = new double [100];

4 个答案:

答案 0 :(得分:1)

如果您使用的是C ++,请使用std::vectorstd::unique_ptr

答案 1 :(得分:0)

您需要手动迭代所有级别才能删除它们 如果有办法检查尺寸,您可以使用它来选择正确的销毁过程。

另外,为什么不使用载体?它们很快,并且在超出范围时自动解除分配

答案 2 :(得分:0)

如果您实现像new int[10][20]这样的二维数组delete[]将会销毁所有数组,但是如果你创建它就像myarray[i] = new int[20]那样迭代,那么你将不得不再次迭代来销毁每一个尺寸。

如果您不确定如何销毁阵列,我会重新使用STL矢量。

答案 3 :(得分:0)

基本上1 new = 1 delete10 new = 10 delete,所以你必须删除你分配的所有内容,所调用的操作数应相等。

没有办法知道(从编译器/程序的角度来看)什么是真正的数据指针,什么只是一些垃圾或其他地方引用的(并将被使用)等等。