繁体   English   中英

这个代码是否可以为MULTIMAP分配空闲内存?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM