7-5 变量的生命周期

7.5.1 研究变量生命周期的意义

(1)研究变量的生命周期,有助于理解变量的行为特征。
注意:单独来看某一个知识点是没有什么意义的,但是将很多的知识点综合起来,就有意义了。所以有了一定的基础之后去做项目是一个很好的提高的方式,通过项目去学习这其中涉及到的各种知识点,又可以了解这些知识点在项目中是如何使用的,所以做项目时,一定要多去查阅资料,多去总结归纳,对不懂的知识点拆开来一个一个认真去研究。最后综合到项目里面来综合起来学习。

7.5.2 栈变量的生命周期

(1)局部变量(栈变量)存储在栈上,生命周期是临时的。临时的意思就是说:代码执行过程中按照需要去创建、使用、消亡的。
(2)譬如一个函数内定义的局部变量,在这个函数每一次调用时都会创建一次,然后使用,最后在函数返回的时候消亡。
(3)思考:一个函数内的局部变量为什么在函数外不能使用?
(4)思考:局部变量为什么分配在栈上?或者说局部变量为什么是临时生命周期?

7.5.3 堆变量的生命周期

(1)首先要明白:堆内存空间是客观存在的,是由操作系统维护的。我们程序只是去申请然后使用然后释放。
(2)我们只关心我们程序使用堆内存的这一段时间,因此堆变量也有了自己的生命周期,就是:从malloc申请时诞生,然后使用,直到free时消亡。
(3)所以堆内存在malloc之前和free之后不能再去访问,因此堆内存在实践编程时都是被反复的malloc和free的。

7.5.4 数据段、bss段变量的生命周期

(1)全局变量的生命周期是永久的。永久的意思就是在程序被执行时诞生,在程序终止时消亡。
(2)全局变量所占用的内存是不能被程序自己释放的,所以程序如果申请了过多的全局变量会导致这个程序一直占用大量内存。
(3)如果说堆内存是图书馆借的书,那么全局变量就是自己买的书。

7.5.5 代码段、只读段的生命周期

(1)其实就是程序执行的代码,就是函数,它的生命周期是永久的。不过一般代码的生命周期我们并不关注。
(2)有时候放在代码段的不只是代码,还有const类型的常量,还有字符串常量。(const类型的常量、字符串常量有时候放在rodata段,有时候放在代码段,取决于平台)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

非主流的豆瓣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值