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

实践中遇到使用vector作为局部变量临时存储大量string的情况,发现运行后大量内存未被释放,看了一下相关的问题,一般都建议使用swap来释放内存,请问如果不使用swap是否真的会存在内存泄漏吗?使用vector存储大量string的最佳实践是什么?
翻阅古今
浏览 4590回答 2
2回答

弑天下

vector这么做是为了避免频繁分配内存和拷贝。因为vector设计接近数组,要求数据连续存放。如果删除元素就释放内存,以后再添加可能会连续可用空间不够,需要移动到其他的内存区域。因为string内部的字符串数据在堆里,并没有直接放在vector中,而且从vector中删除时会释放掉数据。所以你不必担心vector没有释放的空间,一般都是很小的。除非你的vector的数据量变化幅度极大,一般是不用收缩vector的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript