C++中string占用内存大小

转自:https://blog.csdn.net/DLUTBruceZhang/article/details/9822235

1.例子

int main(){
    string s="abc";
    cout<<sizeof(s)<<"\n";
    cout<<sizeof(string)<<"\n";
    vector<string> a={"12","34","56"};
    cout<<sizeof(a)<<"\n";
    cout<<sizeof(a[0])<<"\n";
    cout<<endl;
    return 0;
}

#输出结果
32
32
24
32

string占32个字节,不论赋值与否。不同库中占用大小可能不同,也有4字节、12、28、32字节的。

无论你的string里放多长的字符串,它的sizeof()都是固定的,字符串所占的空间是从堆中动态分配的,与sizeof()无关。我们所用到的 string 类型一般都会是这样实现:

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

 

posted @ 2023-01-15 20:19  lypbendlf  阅读(2919)  评论(0编辑  收藏  举报