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

一图打尽C++内存分区(分段)

一图打尽C++内存分区(分段)

直接上图:

在这里插入图片描述

  1. 栈区(Stack Segment)
    • 位于内存的高地址部分。
    • 用于存储函数调用时的局部变量、函数参数和返回地址。
    • 内存地址从高向低增长。
  2. 堆区(Heap Segment)
    • 位于栈区之下。
    • 用于动态分配的内存(如通过mallocnew分配的内存)。
    • 内存地址从低向高增长。
  3. 全局/静态区(Global/Static Segment)
    • 包括已初始化数据段(.data)和未初始化数据段(.bss)。
    • 存储全局变量和静态变量。
  4. 常量区(Constant Segment)
    • 存储只读常量数据(如字符串字面量)。
    • 通常与代码段合并在一起。
  5. 代码段(Text Segment)
    • 位于内存的低地址部分。
    • 存储程序的可执行代码和只读常量。

注意:

  • 常量区和代码段部分时候会一概而论,两者都存储只读数据。
  • 虚函数表存放在常量区,代码段,虚函数表是编译阶段生成的。
  • 未初始化的全局变量和静态变量
    • 存储在**未初始化数据段(.bss)**中
    • 这些变量在程序启动时被初始化为零
  • 已初始化的全局变量和静态变量
    • 存储在**已初始化数据段(.data)
    • 存储在**已初始化数据段(.data)**中
    • 这些变量在程序启动时被初始化为指定的值

http://www.kler.cn/a/287266.html

相关文章:

  • Web开发:ORM框架之使用Freesql的DbFrist封装常见功能
  • React解决保存less文件后会自动生成css文件的方法
  • 自动化生成测试用例:利用OpenAI提升电商网站测试覆盖率
  • gvim添加至右键、永久修改配置、放大缩小快捷键、ctrl + c ctrl +v 直接复制粘贴、右键和还原以前版本(V)冲突
  • python+Django+MySQL+echarts+bootstrap制作的教学质量评价系统,包括学生、老师、管理员三种角色
  • 大模型呼叫中心,如何建设呼入机器人系统?
  • 内核开发具有哪些特点?大致流程是怎样的?
  • <C++> 红黑树
  • golang make 函数的三个参数分别有什么作用
  • 峟思大坝安全监测系统:科技筑牢工程稳定的基石
  • TCP ISO/OSI模型
  • 开启ROS 2中的geometry坐标模拟展示
  • SQLi-LABS靶场56-60通过攻略
  • [Python]之深拷贝与浅拷贝
  • Flask之Hello world 详解
  • 【补-办公室】拟批语的区别
  • 重构贪心算法(二)
  • 12大常用自动化测试工具,请记得转发收藏!
  • Leetcode 3277. Maximum XOR Score Subarray Queries
  • PostgreSQL LIMIT 子句的使用与优化
  • Jenkins版本升级
  • 米家“智能中枢网关”和“智能多模网关”有什么区别?
  • 快速回顾-HTML5
  • 前端宝典二十一:前端异步编程规范手写Promise、async、await
  • 01.项目初始化
  • 解决yum不能正常使用,报错: No module named yum,如何安装python2和python3并行版本,搭建自动化环境