一,栈变量的生命周期
1,局部变量存储在栈上,生命周期是临时的。从定义变量处诞生到变量最近的 ‘}’处消亡。
2,比如一个函数内定义的局部变量,在这个函数的每一次调用时都会被创建一次,然后使用,最后在函数返回时消亡。
二,堆变量的生命周期
1,堆空间是客观存在的,是由操作系统维护的。程序只是申请然后使用后释放。
2,从malloc申请时诞生,然后使用,最后到free后消亡。malloc之前和free之后都不能再去访问。
三,数据段、.bss段的生命周期
1,全局变量的生命周期时永久的。在程序被执行时诞生,在程序终止时消亡。
2,申请过多的全局变量会导致这个程序一直占用大量的内存。
四,代码段、只读段的生命周期
1,其实就是程序执行的代码,其实就是函数,它的生命周期时永久的。不过一般代码的生命周期并不关注。
2,有时候放在代码段的不只是代码,还有const类型的常量,字符串常量。(const的变量、字符串常量有时候反正代码段,有时候放在只读数据段取决于平台)