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

问题描述:

我有一个multimap,我想从中释放分配给multimap的内存。我如何确保在MULTIMAP的情况下分配的内存被释放

我在*的其他问题之一中提出了与此相关的查询 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

如果您在begin()和end()中使用clear()(或erase()),则将释放多图已分配的项目的所有内存。

这对于说库存整数很合适。

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

它像往常一样工作,你分配 - >你释放它,对于整数,字符和多图,它取决于他们释放他们分配的内存。

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