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