首页 > 系统相关 >C++中string占用内存大小

C++中string占用内存大小

时间:2023-01-15 20:34:22浏览次数:45  
标签:字节 占用 cout 内存大小 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;      //字符串的长度
      ........
};

 

标签:字节,占用,cout,内存大小,C++,字符串,string
From: https://www.cnblogs.com/BlueBlueSea/p/17054071.html

相关文章

  • effective modern c++ - 1 理解模板类别推导
    模板中的行参类型推断会省略引用在这两种模板中,行参的引用都会在推断过程中被省略template<typenameT>//templateAvoidf(T&param);template<typenameT>//temp......
  • C++追加单个字符
    在C++中如何在字符串的后面追加单个的字符呢?代码如下:stringstr;for(chari='A';i<='Z';i++){str+=i;}cout<<str<<endl<<endl;------------------------------......
  • C++获取输入的空格
    在控制台输入输出中,有时候我们想获取用户输入的空格,该如何做呢?在C++中通常的获取输入的方法如下:#include"stdafx.h"#include<iostream>#include<string>usingnamespaces......
  • c++求绝对值
    ---------------------------------------------------------------------------------------C语言中求绝对值的函数为abs(),在C++中对函数abs()进行了重载,这样方便了我们的......
  • c++设置控制台输出的行数和列数
    ----------------------------------------------------------------------------------有时候因为要输出的内容很多,控制台一页显示不完,这时我们可以通过设置控制台输出的行......
  • C++相关总结
    在学习C++的时候,最初是在VS上输出HELLOWORLD,然后开始了C++学习之路,然后开始在b站等一些地方看相关视频,在过了一遍基础之后开始学习C++Primer.C++Primer这本书很厚,在看的......
  • 【数据结构与算法】二分查找算法(C++实现)
    两种写法,取决于划分规则。这两种写法是学的yxc的,至此以后,写二分查找再也不含糊了!yxc的分享在此:二分查找算法模板第一种写法:boolbinarySearch(vector<int>&nums,int......
  • C++计算矩阵对角线和的程序
    二维数组或矩阵的使用对于几个应用。矩阵行和列用于保存数字。我们可以定义2DC++中的矩阵也使用多维数组。在本文中,我们将了解如何使用C++计算给定方阵的对角线和。矩......
  • 最新教程:ubuntu下学会搭载vscode C++编译环境
    首先最重要的还是要参考官网教程https://code.visualstudio.com/docs/cpp/introvideos-cpp在配置过程中要生成3个json文件①tasks.json:编译器编译任务配置文件;②......
  • C/C++显示类型转换的位拓展方式
    最近用verilator写模块的tb,在这里卡了好久(测半天都是C++写的问题)要点变量从小位宽到大位宽显示类型转换(explicitcast)时的位拓展方式,取决于转换前变量的符号性。倘若......