数据区的内存空间

1、数据的生命周期

数据存放于哪个空间,其实本质上我们探讨的是该数据他的“房子”, 当该房子被回收之后,那么该数据的生命也到了尽头。

2、数据的作用范围

数据的生命周期又和作用范围相绑定(不起作用了,生命也该结束了),作用范围可以分为以下几种:

  • 局部变量: 函数内部定义且没有使用static修饰的变量,以及函数的入参,他们的作用范围是所在函数。
  • 全局变量:一般是指在函数外定义的变量以及函数内使用static修饰的变量, 他们的作用范围是在整个程序运行期间。
  • 动态申请数据:主要指程序员使用malloc 起始, free进行结束的变量

3、[作用范围]与[存放空间]的关系

  • 局部变量:存放于栈区
  • 全局变量:存放于静态存储区, 该空间大小在程序编译时就已经确定了。
  • 动态申请数据:存放于堆空间,使用malloc分配后,一定要及时free,避免程序最终堆空间不够而程序崩溃。另外,要避免频繁申请,会导致许多的内存碎片,而无法分配大块的堆空间。 如果频繁使用,可以考虑用全局变量代替。

4、ram

上面说的这些数据都是在程序期间他是可以改变的,可以随机访问和修改, 都存放于ram中。
ram 又可以分为静态ram ( sram )和动态ram (dram)。
静态ram主要存放全局变量,因为这个生命周期长,如果放在动态ram里面,他是需要不断刷新电荷的,那么不得累死。
动态ram主要存放局部变量和动态申请数据,这些数据的生命周期会短一些。

静态ram又分.bss段和.data段。
.bss段放未初始化和初始化为0的全局变量。
.data段放初始化为非0的全局变量。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值