C++ string 內存管理


String 是STL里面的類似一個字符串容器。

String對象調用append(),不能之家已有的字符串加大,因為相鄰的內存可能被占用,因此需要分配一個新的內存塊,將原來的內存賦值到新的內存塊中。這樣會降低效率。

所以c++實現分配了一個比實際字符串大的內存塊,如果字符串不斷增大,超過了內存塊大小,程序將分配一個大小為原理兩倍的新內存卡,以提高足夠的空間。

 

#include <iostream>
#include <string>

int main()
{
	using namespace std;

	string empty;
	string small = "bit";
	string large = "Elephants are a girl's best friend";

	cout << "Sizes:"<<endl;
	cout << "\tempty: "<< empty.size()<<endl;
	cout << "\tsmall: "<< small.size()<<endl;
	cout << "\tlarge: "<< large.size()<<endl;

	//重新分配內存大小
	cout << "Capactities: \n";
	cout << "\tempty: "<< empty.capacity()<<endl;
	cout << "\tsmall: "<< small.capacity()<<endl;
	cout << "\tlarge: "<< large.capacity()<<endl;

	//reserve方法能夠請求內存塊的最小長度
	empty.reserve(50);
	cout << "Capacity after empty.reserve(50): "
		 << empty.capacity() << endl;

	return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM