STL clear

 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的设计.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值