[英]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.