我有一个多图,我想从中释放分配给multimap的内存。
我在Stackoverflow中的另一个问题中提出了与此相关的查询 Will this code free memory allocated for MULTIMAP?。
我的问题是,在multimap中使用erase是否可以确保是否释放了为multimap分配的所有内存空间?
答案 0 :(得分:3)
标准没有规定从容器中擦除元素是否会释放该元素的所有内存;唯一的保证是每个被擦除对象的析构函数只被调用一次。我无法想象你为什么需要保证内存被释放,但如果你这样做,你将不得不检查你正在使用的特定实现。
答案 1 :(得分:1)
如果你使用clear()(或者erase()和begin()和end()),那么多图分配的项目的所有内存都将被释放。
这非常适合说库存。
如果你分配内存然后在多图中存储指针,你需要自己释放内存。
它“像往常一样”,你分配 - >你把它释放出来,对于整数,字符和多重映射,它们可以释放它们分配的内存。