淺談C++中的string 類型占幾個字節。本站提示廣大學習愛好者:(淺談C++中的string 類型占幾個字節)文章只能為提供參考,不一定能成為您想要的結果。以下是淺談C++中的string 類型占幾個字節正文
在C說話中我們操作字符串確定用到的是指針或許數組,如許絕對來講對字符串的處置照樣比擬費事的,好在C++中供給了 string 類型的支撐,讓我們在處置字符串時便利了很多。
起首,我寫了一段測試代碼,以下所示:
#include <iostream>
using namespace std;
int main(void)
{
string str_test1;
string str_test2 = "Hello World";
int value1, value2, value3;
value1 = sizeof(str_test1);
value2 = sizeof(str_test2);
value3 = sizeof(string);
cout<<"str_test1占 "<<value1<<" 個字節"<<endl;
cout<<"str_test2占 "<<value2<<" 個字節"<<endl;
cout<<"string占 "<<value3<<" 個字節"<<endl;
system("pause");
return 0;
}
起首,我用G++編譯運轉,獲得的成果以下圖所示:
這解釋string占4個字節。
以後,我用VS2012編譯運轉,獲得的成果以下圖所示:
奇異,這裡string居然占28個字節。
這裡,我們留意不雅察,還會發明一個成績,不論有無對string類型的變量賦值,或許是賦甚麼值,獲得的成果是一樣的。
上面,來說明上述成績:
string的完成在各庫中能夠有所分歧,然則在統一庫中雷同一點是,不管你的string裡放多長的字符串,它的sizeof()都是固定的,字符串所占的空間是從堆中靜態分派的,與sizeof()有關。 sizeof(string)=4能夠是最典范的完成之一,不外也有sizeof()為12、32字節的庫完成。平日,我們所用到的 string 類型普通都邑是如許完成:
class{
char *_Ptr; //指向字符串的指針
int _Len; //字符串的長度
........};
所以,我們普通接觸到的string類型所占字節數為 8+。