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. 生命周期同整个程序
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值