当前位置: 首页 > news >正文

c++ vs和g++下的string结构

        话不多说进入正题.注:下述结构是在32位平台下进行验证,32位平台下指针占4个字节.

vs下string的结构

        string总共占28个字节,内部结构稍微复杂一点,先是有一个联合体,联合体用来定义 string中字符串的存储空间:(联合体的内部结构见下图)

        当字符串长度小于16时,使用内部固定的字符数组来存放

        当字符串长度大于等于16时,从堆上开辟空间

        其次:还有一个size_t字段保存字符串长度和一个size_t字段保存从堆上开辟空间总的容量

        最后:还有一个指针做一些其他事情

        因为大多数情况下字符串的长度都小于16,那string对象创建好之后,内部已经有了16个字符数组的固定空间,不需要通过堆创建,可以提高效率.

        故总共占16+4+4+4=28个字节

g++下string的结构

        G++下,string是通过写时拷贝实现的string对象总共占4个字节内部只包含了一个指针,该指针将来指向一块堆空间,内部包含了如下字段:

        1.空间总大小(空间容量)    2.字符串有效长度    3.引用计数   

        4.指向堆空间的指针,用来存储字符串

http://www.dtcms.com/a/98632.html

相关文章:

  • 某大麦手机端-抢票
  • Mybatis_Plus中常用的IService方法
  • 图解AUTOSAR_SWS_SPIHandlerDriver
  • PyQt6实例_批量下载pdf工具_主线程启用线程池
  • 语音波形编码与参量编码 LPC 的性能分析
  • 开源项目 vue-element-admin本地启动教程
  • 求职笔试题
  • 信号与系统(郑君里)第一章-绪论 1-21 课后习题解答
  • java面向对象从入门到入土
  • 算法题(111):k与迷宫
  • [Mac]利用Hexo+Github Pages搭建个人博客
  • 计算机视觉初步(环境搭建)
  • 对内核fork进程中写时复制的理解记录
  • Servlet注解与使用模板方法设计模式优化oa项目
  • 简单了解一下Unity的MaterialPropertyBlock
  • C++进阶——封装哈希表实现unordered_map/set
  • 基于飞腾/龙芯+盛科CTC7132全国产交换机解决方案
  • MySQL数据库和表的操作之SQL语句
  • dom0运行android_kernel: do_serror of panic----failed to stop secondary CPUs 0
  • Java学习------源码解析之StringBuilder
  • C++笔记-string(中)
  • Keil编译生成的axf文件的介绍
  • 38.C++哈希3(哈希表底层模拟实现 - 开散列拉链法和哈希桶)
  • 异常与捕获
  • Android7 Input(二)Linux 驱动层输入事件管理
  • Protobuf 的快速使用(二)
  • SVTAV1函数分析-svt_av1_cost_coeffs_txb
  • (二)创建实例
  • 人工智能之数学基础:实对称矩阵
  • AI大模型最新发布[update@202503]