C++ string清空并释放内存空间的两种方法(shrink_to_fit()、swap())

说明

在STL中 vector和string 是比较特殊的,clear()之后是不会释放内存空间的,也就是size()会清零,但capacity()不会改变,需要手动去释放,说明 clear() 没有释放内存。
想释放空间的话,除了swap一个空string外,c++11里新加入的的std::basic_string::shrink_to_fit 也可以。

代码

注意string的swap清空方法为:string().swap(str);

vector的swap清空方法为:nums.swap(vector<int>());

#include <iostream>
#include <string>
 
int main()
{
	std::string s;
	std::cout << "Default-constructed capacity is " << s.capacity()
		<< " and size is " << s.size() << '\n';
	for (int i = 0; i < 42; i++)
		s.append(" 42 ");
	std::cout << "Capacity after a couple of appends is " << s.capacity()
		<< " and size is " << s.size()

目前已整理十万字的C/C++、嵌入式常见面试题!!!!还在持续更新中!!! 这个专栏写完了,再po上自己亲手敲的笔试编程题整理。

全部评论

相关推荐

牛客263158796号:我领羊一面后十天不挂也不推进 今天问hr说等前序的第一批意向发完看情况再看是否推进
点赞 评论 收藏
分享
Noob1024:一笔传三代,人走笔还在
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务