最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

在C語(yǔ)言中我們操作字符串肯定用到的是指針或者數(shù)組,這樣相對(duì)來說對(duì)字符串的處理還是比較麻煩的,好在C++中提供了 string 類型的支持,讓我們?cè)谔幚碜址畷r(shí)方便了許多。

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

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

 system("pause");
 return 0;
}


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


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


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

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

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

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

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

相關(guān)文章

  • 使用C語(yǔ)言實(shí)現(xiàn)本地socke通訊的方法

    使用C語(yǔ)言實(shí)現(xiàn)本地socke通訊的方法

    這篇文章主要介紹了?使用C語(yǔ)言實(shí)現(xiàn)本地socke通訊,代碼分為服務(wù)器代碼和客戶端代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • C++中的const和constexpr詳解

    C++中的const和constexpr詳解

    C++ const 和 constexpr 的區(qū)別呢,constexpr表示這玩意兒在編譯期就可以算出來(前提是為了算出它所依賴的東西也是在編譯期可以算出來的)。而const只保證了運(yùn)行時(shí)不直接被修改(但這個(gè)東西仍然可能是個(gè)動(dòng)態(tài)變量)。下面我們來詳細(xì)講解下。
    2016-01-01
  • C++中的整型

    C++中的整型

    這篇文章我們來聊聊C++中的整型,整型即整數(shù),與小數(shù)對(duì)應(yīng)。許多語(yǔ)言只能表示一種整型(如Python),而在C++當(dāng)中根據(jù)整數(shù)的范圍提供了好幾種不同的整型,下面文章我們就來看看具體是哪幾種,需要的朋友也可以參考一下
    2021-11-11
  • 手把手教你如何優(yōu)化C語(yǔ)言程序

    手把手教你如何優(yōu)化C語(yǔ)言程序

    程序進(jìn)行優(yōu)化,通常是指優(yōu)化程序代碼或程序執(zhí)行速度。優(yōu)化代碼和優(yōu)化速度實(shí)際上是一個(gè)予盾的統(tǒng)一,一般是優(yōu)化了代碼的尺寸,就會(huì)帶來執(zhí)行時(shí)間的增加,如果優(yōu)化了程序的執(zhí)行速度,通常會(huì)帶來代碼增加的副作用,很難魚與熊掌兼得,只能在設(shè)計(jì)時(shí)掌握一個(gè)平衡點(diǎn)
    2013-07-07
  • Qt實(shí)現(xiàn)簡(jiǎn)單TCP服務(wù)器

    Qt實(shí)現(xiàn)簡(jiǎn)單TCP服務(wù)器

    這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)簡(jiǎn)單TCP服務(wù)器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • 去掉vs2010中ipch文件和.sdf文件的解決方法

    去掉vs2010中ipch文件和.sdf文件的解決方法

    本篇文章介紹了,在vs2010中產(chǎn)生的ipch文件和.sdf文件的解決方法。需要的朋友參考下
    2013-05-05
  • C++深入探究不同的繼承體系

    C++深入探究不同的繼承體系

    繼承是C++面向?qū)ο缶幊讨械囊婚T。繼承是子類繼承父類的特征和行為,或者是繼承父類得方法,使的子類具有父類得的特性和行為。重寫是子類對(duì)父類的允許訪問的方法實(shí)行的過程進(jìn)行重新編寫,返回值和形參都不能改變。就是對(duì)原本的父類進(jìn)行重新編寫,但是外部接口不能被重寫
    2022-05-05
  • C++設(shè)計(jì)模式之觀察者模式(Observer)

    C++設(shè)計(jì)模式之觀察者模式(Observer)

    這篇文章主要為大家詳細(xì)介紹了C++設(shè)計(jì)模式之觀察者模式Observer,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • C++實(shí)現(xiàn)萬(wàn)年歷小功能

    C++實(shí)現(xiàn)萬(wàn)年歷小功能

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)萬(wàn)年歷小功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 你不知道的C++中namespace和using的用法實(shí)例

    你不知道的C++中namespace和using的用法實(shí)例

    在C++語(yǔ)言編寫的程序中,變量和函數(shù)等的作用范圍是有一定限制的,下面這篇文章主要給大家介紹了一些你不知道的C++中namespace和using的用法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12

最新評(píng)論

雅江县| 玉龙| 衢州市| 历史| 江西省| 淅川县| 麦盖提县| 沙田区| 错那县| 连江县| 黄平县| 绥化市| 青岛市| 麻江县| 轮台县| 尚义县| 文水县| 怀来县| 汽车| 长垣县| 沙洋县| 桑植县| 洪湖市| 巴中市| 沁阳市| 南昌市| 西乌珠穆沁旗| 鹤山市| 梨树县| 黄陵县| 河源市| 外汇| 玛多县| 睢宁县| 延川县| 贵溪市| 高碑店市| 湟中县| 衡南县| 子洲县| 昌邑市|