[英]C++ Properly deallocate multidimensional array with underlying contiguous memory
[英]Deallocate multidimensional array in c++
我将如何销毁任意大小,尺寸和类型的动态数组? 是否delete []会自动下降到二维数组的级别或仅删除第一级指针,以便程序需要在每个数组级别上手动进行迭代?
理想情况下,我需要一个命令(用于模板类),该命令将销毁一到四个维数组。 如果有一种方法可以检查数组的维数,那么它也将起作用。
我正在使用动态数组,例如double * ar = new double [100];
如果您使用的是C ++,请使用std::vector
和std::unique_ptr
。
您需要手动遍历所有级别以将其删除。
如果可以检查尺寸,则可以使用该方法选择正确的销毁过程。
另外,为什么不使用向量呢? 它们速度很快,超出范围时会自动释放
如果像new int[10][20]
那样实例化二维数组,则delete[]
将破坏所有数组,但是如果创建时像myarray[i] = new int[20]
那样迭代,那么您将不得不再次迭代破坏每个维度。
如果您不确定如何销毁数组,建议您使用STL向量。
基本上1 new = 1 delete
和10 new = 10 delete
,所以您必须删除分配的所有内容,被调用的那些操作的数量应相等。
(从编译器/程序的角度来看)无法知道什么是真正的数据指针,什么只是垃圾或在其他地方引用(并将使用)等等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.