簡體   English   中英

如何釋放c ++內存向量 <int> * arr?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM