国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

淺談C++中的string 類型占幾個字節

2020-01-26 15:56:48
字體:
來源:轉載
供稿:網友

在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+。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 云阳县| 涡阳县| 江山市| 汤原县| 庆元县| 嘉鱼县| 新巴尔虎右旗| 无极县| 四子王旗| 赞皇县| 乌什县| 涿州市| 色达县| 合水县| 虹口区| 金山区| 青神县| 武陟县| 荥阳市| 株洲市| 绥江县| 浮梁县| 龙游县| 古田县| 峡江县| 宁晋县| 阿合奇县| 莒南县| 镇沅| 上高县| 阳原县| 蒙阴县| 荆门市| 剑川县| 博兴县| 尚志市| 兴仁县| 樟树市| 田林县| 民权县| 谢通门县|