作者legnaleurc (CA)
看板C_and_CPP
标题Re: [STL ] 使用map的记忆体问题
时间Thu May 14 02:06:42 2009
※ 引述《jesony1 (小猪先生)》之铭言:
: 推 chrisdar:a.swap(map()) 05/12 21:08
: 推 jerohands:可以请问为何要作swap()?在clear()之後作这项似乎没有 05/14 00:40
: → jerohands:意义。基本上写法都没问题,那可能的问题就在於你定义的 05/14 00:40
这是 Clear-and-minimize idiom
因为 STL 的 clear() 通常不保证会真正释放
以备容器之後又要用到这块
因此有个惯用手法确保它一定会释放空间:
std::map< ... >().swap( a );
1. 建构一个空的暂时物件
2. 暂时物件的内容和 a 调换(这时候 a 是真正空的,没有 buffered space)
3. 暂时物件跟着原本 a 的内容一起被释放
当然,如果内容物本身就会 leak ,这手法也没用 XD
Reference:
http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Clear-and-minimize
--
自High笔记(半荒废)
http://legnaleurc.blogspot.com/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.127.21.174
1F:→ jerohands:受教了 05/14 02:17
2F:推 jesony1:swap这个方法似乎只对vector有用~对map没用 05/14 15:39