程序中的栈、堆、静态存储区

程序中的栈

栈是现代计算机程序里最为重要的概念之一
栈在程序中用于维护函数调用上下文
函数中的参数和局部变量存储在栈上

栈保存了一个函数调用所需的维护信息

函数调用过程
每次函数调用都对应着一个栈上的活动记录
调用函数的活动记录位于栈的中部
被调用函数的活动记录位于栈的顶部

函数调用时,对应的栈空间在函数返回前是专用的
函数调用结束后,栈空间将被释放,数据不再有效

程序中的堆

堆是程序中一块预留的内存空间,可由程序自由使用
堆中被程序申请使用的内存在被主动释放前将一直有效

C语言程序中通过库函数的调用获得堆空间
-头文件:malloc.H
-malloc–以字节的方式动态申请堆空间
-free–将堆空间归还给系统

系统对堆空间的管理方式
-空闲链表法,位图法,对象池法等等

为什么有了栈还要堆
栈上的数据在函数返回后就被释放掉,无法传到函数内部如:局部变量

程序中的静态存储区

  • 静态存储区随着程序的运行而分配空间
  • 静态存储区的生命周期直到程序运行结束
  • 在程序的编译期静态存储区的大小就已经确定
  • 静态存储区主要用于全局变量和静态局部变量
  • 静态存储区的信息最终会保存到可执行程序中
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值