【一听就懂】 堆栈是个啥?

堆栈是一种数据结构,类似于弹夹,遵循“后进先出”原则。入栈是将数据存入,出栈则是取出数据。在CPU执行函数调用时,堆栈用于保存返回地址。如果堆栈不断调用而无返回,会导致堆栈溢出。堆栈在处理嵌套函数调用时尤为关键,确保顺序执行。

【一听就懂】 堆栈是个啥?

简单直白理解:栈可以理解成弹夹,入栈-弹夹压入子弹,出栈-子弹射出去

入栈: 没有数据的时候,栈顶和栈底是重合的,当需要存数据的时候,栈顶向上挪,把数据放在栈顶栈底之间-叫入栈(压栈)

出栈: 当需要取数据的时候,把数据复制一份到cpu寄存器,把栈顶的数据向下挪 (出栈后数据已经被当作垃圾了)

堆栈里面的数据能不能上下调换位置?

不行,堆栈的数据,类比 弹夹,子弹相当于数据,一颗一颗子弹子弹压入弹夹,子弹先入后出,堆栈的数据不能上下调换位置。

cpu执行过程

cpu执行的过程就是把机器码拿过来分析出这句机器码是干嘛的,该计算的计算,该取数据的取数据。
函数:一堆代码的打包

函数调用

cpu执行代码时临时跳到另一个函数,cpu记不住执行过哪个函数,跳转的时候,cpu就把这个函数的地址压入堆栈里面做记录,在返回时候把这个地址弹栈,地址就会复制给cpu,cpu继续执行代码。

为啥非要用堆栈呢?

因为函数嗲用是嵌套的,可能会套娃,这就需要用堆栈记录返回地址按顺序保存,在按照相反的顺序提取出来,这种先入后出的操作顺序当然用堆栈最合适了

假如堆栈一直调用不返回会怎么样呢?

堆栈溢出 (一定要有个条件)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

前端酱紫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值