clear() 确保 map 中每个 item 的 destructor 都被调用,然后 map 在逻辑上为空。后续的添加 item 等同于在空 map 上添加 item 。
但是 clear() 并不确保一定释放内存。释放内存用 map::swap 和一个空 map 交换。
另外,释放回 heap 的内存并不一定马上交还给 OS 。Top 不能查看 heap 的内存分配,只能查看 process 本身的内存 footprint 。C++ 的默认 allocator
使用内存池,map::clear 只是将内存还给池子,池子里的内存不会还给操作系统,但可以被 allocator 复用
一般的STL底层都有设计一个叫做memory
pool的东东.它用于管理小片段内存并做次级内存分配,你掉用clear的时候内存会交还给memory pool而不会真正释放. 请参考allocator的设计.
7129

被折叠的 条评论
为什么被折叠?



