数据区的内存空间
1、数据的生命周期
数据存放于哪个空间,其实本质上我们探讨的是该数据他的“房子”, 当该房子被回收之后,那么该数据的生命也到了尽头。
2、数据的作用范围
数据的生命周期又和作用范围相绑定(不起作用了,生命也该结束了),作用范围可以分为以下几种:
- 局部变量: 函数内部定义且没有使用static修饰的变量,以及函数的入参,他们的作用范围是所在函数。
- 全局变量:一般是指在函数外定义的变量以及函数内使用static修饰的变量, 他们的作用范围是在整个程序运行期间。
- 动态申请数据:主要指程序员使用malloc 起始, free进行结束的变量
3、[作用范围]与[存放空间]的关系
- 局部变量:存放于栈区
- 全局变量:存放于静态存储区, 该空间大小在程序编译时就已经确定了。
- 动态申请数据:存放于堆空间,使用malloc分配后,一定要及时free,避免程序最终堆空间不够而程序崩溃。另外,要避免频繁申请,会导致许多的内存碎片,而无法分配大块的堆空间。 如果频繁使用,可以考虑用全局变量代替。
4、ram
上面说的这些数据都是在程序期间他是可以改变的,可以随机访问和修改, 都存放于ram中。
ram 又可以分为静态ram ( sram )和动态ram (dram)。
静态ram主要存放全局变量,因为这个生命周期长,如果放在动态ram里面,他是需要不断刷新电荷的,那么不得累死。
动态ram主要存放局部变量和动态申请数据,这些数据的生命周期会短一些。