2012-03-12 79 views
0

我有一個multimap,我想從中釋放分配給multimap的內存。我如何確保在MULTIMAP的情況下分配的內存被釋放

我在Stackoverflow的其他問題之一中提出了與此相關的查詢 Will this code free memory allocated for MULTIMAP?

我的問題是,無論在multimap中使用擦除確保是否所有分配給multimap的內存空間都被釋放?

+1

我會在@nabulke之後重複:考慮使用智能指針。 – 2012-03-12 12:28:23

+2

只是我的意見,但最好(對於OP)瞭解變量,指針,分配和這樣的東西如何工作 – Valmond 2012-03-12 12:30:50

+0

@Ritesh:你確定你真的明白multimap分配自己的內存(通過它的'Allocator' )和內存__you__正在爲元素分配(通過'new')?如果你明白其中的差異,那麼你在談論哪兩個分配? – nabulke 2012-03-12 13:12:10

回答

1

如果您在begin()和end()中使用clear()(或erase()),則將釋放多圖已分配的項目的所有內存。

這對於說庫存整數很合適。

如果你分配內存然後在multimap中存儲指針,你需要自己釋放內存。

它像往常一樣工作,你分配 - >你釋放它,對於整數,字符和多圖,它取決於他們釋放他們分配的內存。

3

該標準並未指定是否從容器中擦除元素將釋放該元素的所有內存;唯一的保證就是每個擦除對象的析構函數都會被調用一次。我無法想象爲什麼你可能需要保證內存被釋放,但如果你這樣做,那麼你將不得不檢查你正在使用的特定實現。