int main() {
std::string s;
for (int i = 0 ; i < 345; ++i) { s += '0'; }
cout << s.size() << " " << s.capacity() << endl;
string(s).swap(s);
cout << s.size() << " " << s.capacity() << endl;
/* differ from vector, seems it do not work to release the extra space
* print
* 345 512
* 345 512
*/
std::vector<int> vec;
for (int i = 0 ; i < 345; ++i) {
vec.push_back(i);
}
cout << vec.size() << " " << vec.capacity() << endl;
vector<int>(vec).swap(vec);
cout << vec.size() << " " << vec.capacity() << endl;
/*
* print : extra free space is released
* 345 512
* 345 345
*/
return 0;
}
C++ : vector与string的内存分配问题
最新推荐文章于 2023-03-04 19:44:10 发布