欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談C++中的string 類型占幾個字節(jié)

 更新時間:2013年08月13日 10:13:28   作者:  
本篇文章小編并不是為大家講解string類型的用法,而是講解我個人比較好奇的問題,就是string 類型占幾個字節(jié)

在C語言中我們操作字符串肯定用到的是指針或者數(shù)組,這樣相對來說對字符串的處理還是比較麻煩的,好在C++中提供了 string 類型的支持,讓我們在處理字符串時方便了許多。

首先,我寫了一段測試代碼,如下所示:

復(fù)制代碼 代碼如下:

#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<<" 個字節(jié)"<<endl;
 cout<<"str_test2占 "<<value2<<" 個字節(jié)"<<endl;
 cout<<"string占 "<<value3<<" 個字節(jié)"<<endl;

 system("pause");
 return 0;
}


首先,我用G++編譯運行,得到的結(jié)果如下圖所示:


這說明string占4個字節(jié)。
之后,我用VS2012編譯運行,得到的結(jié)果如下圖所示:


奇怪,這里string竟然占28個字節(jié)。
這里,我們注意觀察,還會發(fā)現(xiàn)一個問題,不管有沒有對string類型的變量賦值,或者是賦什么值,得到的結(jié)果是一樣的。

下面,來解釋上述問題:
string的實現(xiàn)在各庫中可能有所不同,但是在同一庫中相同一點是,無論你的string里放多長的字符串,它的sizeof()都是固定的,字符串所占的空間是從堆中動態(tài)分配的,與sizeof()無關(guān)。    sizeof(string)=4可能是最典型的實現(xiàn)之一,不過也有sizeof()為12、32字節(jié)的庫實現(xiàn)。通常,我們所用到的 string 類型一般都會是這樣實現(xiàn):

復(fù)制代碼 代碼如下:

class{     
char *_Ptr;    //指向字符串的指針     
int _Len;      //字符串的長度     
........};

所以,我們一般接觸到的string類型所占字節(jié)數(shù)為 8+。

相關(guān)文章

最新評論