2

我将如何销毁任意大小、维度和类型的动态数组?delete[] 会自动降低二维数组的级别,还是只删除第一级指针,因此程序需要手动迭代每个数组级别?

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

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

4

4 回答 4

1

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

于 2012-10-18T10:26:26.993 回答
0

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

另外,为什么不使用向量?它们速度很快,并且在超出范围时会自动释放

于 2012-10-18T10:15:43.157 回答
0

如果你像这样实例化二维数组new int[10][20]delete[]破坏所有数组,但如果你创建它迭代像myarray[i] = new int[20]这样你将不得不再次迭代以破坏每个维度。

如果您不确定如何销毁数组,我建议您使用 STL 向量。

于 2012-10-18T10:22:17.343 回答
0

基本上1 new = 1 deleteand 10 new = 10 delete,所以你必须删除你分配的所有东西,调用的那些操作的数量应该是相等的。

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

于 2012-10-18T10:33:04.843 回答