我如何破坏任意大小,尺寸和类型的动态数组? delete []会自动降低二维数组的级别,还是只删除第一级指针,这样程序需要手动迭代每个数组级别?
理想情况下,我需要一个命令(用于模板类),它会破坏一到四维数组。如果有办法检查数组的维数,它也可以工作。
我正在使用dymanic数组,例如double * ar = new double [100];
答案 0 :(得分:1)
如果您使用的是C ++,请使用std::vector
和std::unique_ptr
。
答案 1 :(得分:0)
您需要手动迭代所有级别才能删除它们 如果有办法检查尺寸,您可以使用它来选择正确的销毁过程。
另外,为什么不使用载体?它们很快,并且在超出范围时自动解除分配
答案 2 :(得分:0)
如果您实现像new int[10][20]
这样的二维数组delete[]
将会销毁所有数组,但是如果你创建它就像myarray[i] = new int[20]
那样迭代,那么你将不得不再次迭代来销毁每一个尺寸。
如果您不确定如何销毁阵列,我会重新使用STL矢量。
答案 3 :(得分:0)
基本上1 new = 1 delete
和10 new = 10 delete
,所以你必须删除你分配的所有内容,所调用的操作数应相等。
没有办法知道(从编译器/程序的角度来看)什么是真正的数据指针,什么只是一些垃圾或其他地方引用的(并将被使用)等等。