【C++】026、C++内存分布:全局变量、局部变量、static变量、const常量
·
一、C++内存分布原则
-
1、全局静态看程序生命周期(全局/静态区),局部临时变量看栈空间(Stack),动态申请看堆空间(Heap),字面常量只读区(常量区),函数指令代码区(.text)
-
2、特殊情况:全局const在常量区,局部cosnt在栈区
二、内部布局图
高地址 0x7FFF... ┌─────────────┐
│ 栈 (Stack) │ ← 局部变量、函数参数、返回地址
├─────────────┤
│ 空闲区 │
├─────────────┤
│ 堆 (Heap) │ ← new/malloc 动态分配
├─────────────┤
│ 全局/静态区 │ ← 细分为 .data 和 .bss
│ (Global) │
├─────────────┤
│ 常量区 (.rodata)│ ← 字符串字面量、全局 const
├─────────────┤
低地址 0x0804... │ 代码区 (.text) │ ← CPU 执行的机器指令
└─────────────┘
三、全局变量默认值问题
-
未初始化的全局变量和静态变量的默认值为0;因为.bss段数据在程序加载时由操作系统强制清零(memset),只有栈上的局部未初始化变量才是随机值。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)