如何确保在释放MULTIMAP的情况下分配的内存

时间:2012-03-12 12:19:39

标签: c++ c++11

我有一个多图,我想从中释放分配给multimap的内存。

我在Stackoverflow中的另一个问题中提出了与此相关的查询 Will this code free memory allocated for MULTIMAP?

我的问题是,在multimap中使用erase是否可以确保是否释放了为multimap分配的所有内存空间?

2 个答案:

答案 0 :(得分:3)

标准没有规定从容器中擦除元素是否会释放该元素的所有内存;唯一的保证是每个被擦除对象的析构函数只被调用一次。我无法想象你为什么需要保证内存被释放,但如果你这样做,你将不得不检查你正在使用的特定实现。

答案 1 :(得分:1)

如果你使用clear()(或者erase()和begin()和end()),那么多图分配的项目的所有内存都将被释放。

这非常适合说库存。

如果你分配内存然后在多图中存储指针,你需要自己释放内存。

它“像往常一样”,你分配 - >你把它释放出来,对于整数,字符和多重映射,它们可以释放它们分配的内存。