[英]How to free c++ memory vector<int> * arr?
我有一個vector<int>* arr
,它實際上是一個2D數組。
arr = new vector<int> [size];
我這樣做是否可以
delete arr;
是否會自動刪除arr[i]
,因為它是標准向量?
不,你在使用delete[]
時應該使用delete[]
new[]
。
但這很瘋狂。 你在一個維度上使用了友好的快樂友好容器,然后通過手動動態分配外部維度來取消所有的好處。
相反,只需使用std::vector<std::vector<int> >
,或將兩個維度展平為單個向量。
你的代碼壞了。 你應該使用delete[]
和new[]
:
delete[] arr;
解決此問題后,您的代碼將正常運行。
我必須同意評論者的說法,C風格的矢量數組看起來有點瘋狂。 為什么不使用向量矢量呢? 那將為您處理內存管理。
你在那里分配一個向量數組。 所以你需要刪除數組:
delete [] arr;
如果您打算分配'size'元素的向量,則需要:
arr = new vector<int>(size); // don't use array delete for this though!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.