STL string和vector的内存释放

转载:http://blog.csdn.net/liangzhao_jay/article/details/19993595

1.随着用string越来越多,有的时候你会发现string的内存管理的问题,存在内存暂时泄露的问题。这个内存泄露与我们常规说的内存泄露问题不一样。它部是真的内存泄露,在程序结束的时候,内存还是会释放掉的,但是在程序的运行过程中,内存被string对象占用着。比如你有个string对象保存了一个比较大的网页,用完了之后,你想通过clear来回收这个对象的内存,你这样是做不到的。因为string的clear并不会真正回收string对象分配内存。那要怎么做才能做到呢?

用swap函数,你申请一个临时的string对象,然后用这个临时string对象与要释放内存的string对象交换内存,就能达到释放内存的作用。比如s是我们要释放的内存,那么string().swap(s);就能释放掉s对象的内存。


2.vector用clear()也是没用,如需释放也要swap


3.resize()和reserve()方法:空间由小变大ok,由大变小 失败




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值