1-变量的存储

参考文章

存储空间

分区说明
区域作用
内存栈区由编译器自动分配释放,存放函数的参数值、返回值和局部变量
内存堆区存放new或者malloc出来的动态内存分配
代码区存放CPU执行的机器指令,共享只读
全局区存放全局变量、静态变量、常量

全局区分为data区、bss区(Block Started by Symbol)

区域作用
data存放已经初始化的全局变量、静态变量和常量
bss存放未初始化的全局变量和静态变量,并在程序执行之前会自动初始化为0或NULL

在这里插入图片描述
参考文章

STM32 Keil环境分区
区域作用例子
Code存储程序代码执行代码,函数实现
RO-data存储const常量和指令只读数据,全局常量数据和字符串
RW-data存储初始化值不为0的全局变量已初始化的读写数据,程序中定义并且初始化的全局变量和静态变量
ZI-data存储未初始化的全局变量或初始化值为0的全局变量未初始化的读写数据,程序中定义了但没有初始化的全局变量和静态变量

Flash=Code + RO-data + RW-data
RAM= RW-data + ZI-data
参考文章1
参考文章2
参考文章3

变量种类

局部变量
  1. 局部变量作用域局限于调用函数当中
  2. 局部变量的内存空间是在栈区的,由OS进行申请和释放
  3. OS不会对未初始化的局部变量设初值,一般是一个随机值
全局变量
  1. 位于函数体之外
  2. 生命周期伴随整个程序
静态变量
静态全局变量
  1. 性质如同全局变量
  2. 静态全局变量只能在当前的源文件中使用,不可跨文件使用
静态局部变量
  1. 作用域同样局限于调用函数之中
  2. 变量存储于全局静态区,不位于栈
  3. 生命周期同整个程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值