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++、嵌入式软开常见面试题汇总 文章被收录于专栏
目前已整理十万字的C/C++、嵌入式常见面试题!!!!还在持续更新中!!! 这个专栏写完了,再po上自己亲手敲的笔试编程题整理。