为了账号安全,请及时绑定邮箱和手机立即绑定

std::vector<std::string>是否需要手动内存释放?

std::vector<std::string>是否需要手动内存释放?

翻阅古今 2019-05-22 17:09:49
实践中遇到使用vector作为局部变量临时存储大量string的情况,发现运行后大量内存未被释放,看了一下相关的问题,一般都建议使用swap来释放内存,请问如果不使用swap是否真的会存在内存泄漏吗?使用vector存储大量string的最佳实践是什么?
查看完整描述

2 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

vector这么做是为了避免频繁分配内存和拷贝。因为vector设计接近数组,要求数据连续存放。如果删除元素就释放内存,以后再添加可能会连续可用空间不够,需要移动到其他的内存区域。因为string内部的字符串数据在堆里,并没有直接放在vector中,而且从vector中删除时会释放掉数据。所以你不必担心vector没有释放的空间,一般都是很小的。除非你的vector的数据量变化幅度极大,一般是不用收缩vector的。
                            
查看完整回答
反对 回复 2019-05-22
  • 2 回答
  • 0 关注
  • 4589 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信