簡體   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