实践中遇到使用vector作为局部变量临时存储大量string的情况,发现运行后大量内存未被释放,看了一下相关的问题,一般都建议使用swap来释放内存,请问如果不使用swap是否真的会存在内存泄漏吗?使用vector存储大量string的最佳实践是什么?
2 回答
弑天下
TA贡献1818条经验 获得超8个赞
vector这么做是为了避免频繁分配内存和拷贝。因为vector设计接近数组,要求数据连续存放。如果删除元素就释放内存,以后再添加可能会连续可用空间不够,需要移动到其他的内存区域。因为string内部的字符串数据在堆里,并没有直接放在vector中,而且从vector中删除时会释放掉数据。所以你不必担心vector没有释放的空间,一般都是很小的。除非你的vector的数据量变化幅度极大,一般是不用收缩vector的。
添加回答
举报
0/150
提交
取消