繁体   English   中英

在C ++中取消分配多维数组

[英]Deallocate multidimensional array in c++

我将如何销毁任意大小,尺寸和类型的动态数组? 是否delete []会自动下降到二维数组的级别或仅删除第一级指针,以便程序需要在每个数组级别上手动进行迭代?

理想情况下,我需要一个命令(用于模板类),该命令将销毁一到四个维数组。 如果有一种方法可以检查数组的维数,那么它也将起作用。

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

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

您需要手动遍历所有级别以将其删除。
如果可以检查尺寸,则可以使用该方法选择正确的销毁过程。

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM