![](/img/trans.png)
[英]How to write destructor to be able to compile the code and free all allocated memory?
[英]Will this code free memory allocated for MULTIMAP?
我有一個multimap和一個指向multimap的指針。 假設我有multimap typedef multimap<class1, class2*> LO_Index;
。 我也有LO_Index * _index;
哪個指向multimap。 要釋放為此maop分配的所有內存空間,我將執行以下操作。 我有一個Reset函數,它執行以下操作以釋放為此multimap
釋放的所有內存空間:
for ( LO_Index ::iterator i = _index->begin(); i != _index->end(); i++ )
delete (*i).second;
// Delete all entries in the index
_index->erase( _index->begin(), _index->end() );
我在set的情況下讀到的是setname.clear()實際上並沒有釋放所有分配的空間。 但在http://www.cplusplus.com/reference/stl/multimap/erase/我發現了擦除
這有效地減少了容器大小,刪除了元素的數量,調用每個元素的析構函數。
所以我想它實際上將釋放分配的空間。 但是我想確認我的reset函數中寫的代碼是否實際上是在釋放內存。
對於multimap,delete(* i).second無法編譯,因為您只能通過指針刪除對象而int不是指針。
關於擦除功能:就您而言,條目將從容器中刪除。 分配器可能決定不返回內存,而是將其緩存以便重用,但是,這僅在有限的情況下才有意義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.