栈0——栈帧

栈帧就是函数或者线程在运行时在栈上开辟的一块空间,用来保存cpu寄存器、局部变量等内容的。
所以分为函数栈与线程栈,实质它们都是栈,一样的。函数栈是函数用的,线程栈是给线程用的。
为何有栈呢?因为cpu的寄存器不够用,人他妈的太聪明了,正好用栈记录下,这样入栈出栈,保存和恢复cpu各寄存器的值。每个线程其实就相当于一个函数,只不过一般线程是一个无限循环的函数。因此每个线程都有一个线程栈。创建线程的时候线程栈会初始化为默认的cpu寄存器值。等到线程正常退出时会调用默认的一个函数来做清理工作之类的。
线程的运行动态图之一:线程正常运行时,线程栈就是在周而复始地入栈出栈。——就像一个气球吹大又放气变小,再吹大再放气变小,如此循环往复;也像内燃机或者打针时针管里的活塞运动,周而复始不断地进进出出;也像一个心脏周而复始地在跳动(不断缩紧和膨胀,嘭嘭、嘭嘭响)。每个线程正常运行时,其栈达到的最大深度是有上限的(这个和程序代码有关,一旦写完就固定了)。栈溢出就是捅破天了。特别注意:每个线程有各自独立的线程栈——不与其他线程共享。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值