c语言变量的生命周期

栈变量(局部变量)的生命周期

       自己定义的局部变量被分配在栈上,而栈在用完时会被释放掉,所以局部变量的生命周期时临时的。 临时变量在被函数每一次定义、调用时都会被创建一次,在函数返回时就会被释放。每一次调用局部变量,都会在内存中重新分配,他的地址都会改变。

       所以函数内的局部变量不能够再函数外使用,是无连接的。在我们实际编程时,如果要使用小块的临时空间,可以申请栈空间。

       局部变量也叫做临时变量,因为给它定义的这个作用/使命,所以不能够在函数外使用。

堆变量(大块的局部变量)的生命周期

        堆变量就是malloc(及其类似的关键字)申请的变量。在我们实际编程时,如果要使用大块的临时空间,可以申请堆空间,用完释放。所以在一些代码中,使用堆内存都是不断地malloc和free的。在linux内核代码中,再用到大的结构体时,大部分都是malloc申请内存去照着结构体方法去用,用完之后free。下次在进入这个函数时,再去malloc和free。

        从计算机的角度来看,堆内存空间是客观存在的,是有操作系统维护的,我们程序在调用时只是去申请用完后再去释放掉。跟我们申不申请没有关系,这段内存是一直在哪的,不会改变。就相当于图书馆的书籍,想要看的时候可以去借,不想看时,书也在图书馆放着,没有改变。

        但是从我们使用者的角度来看,堆变量的生命周期时我们使用堆内存这段时间。我们这里讨论的时从我们申请到释放所占用的时间。在我们使用malloc申请变量时诞生,使用完之后,free将它释放后消亡。在

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值