为什么要划分栈和堆?

栈用于管理函数执行顺序,实现先进先出的逻辑,而堆则提供长期存储空间,保证程序的连续性,通过堆实现函数间的传参。两者共同确保了程序的可执行性和有序性。
摘要由CSDN通过智能技术生成

为什么要有栈?

为什么要把程序的内存有顺序的分开管理?

    程序的执行是需要规则的,在约定速成的情况下,代码的执行是从上至下的。在这个基础上,如果要考虑函数的运行,在执行之前是很难预测出完整的执行顺序的,因此。把栈和堆无顺序的放在内存中是不合理的,因为这可能会错估一段函数的内存,从而导致程序的崩溃。

为什么要使用栈的逻辑管理要执行的函数?

    程序的编译读取也遵循从上至下的道理,那在这个基础上运行一个程序,可以把先读取的函数语句运行,也可以把后读取的函数语句先运行(这不符合设计逻辑)。这两种方式都是可以的(当然也可以考虑无序运行,但这显然不合理),因此合理的执行逻辑是先进先出。这就是栈。

为什么要有堆?

     在有栈的基础上,每段函数运行完内存都会释放掉,这就会导致程序毫无连续性,你可能会想那把栈上的函数处理完再释放不就行了?这回到了之前的问题,在此不多赘述。因此考虑连续性的时候就有了堆这个概念,堆用于存放一些有必要长期存储的变量,这可以实现函数之间的传参,也就是实现了程序的连续性。

   总结:堆和栈都是为了实现程序的可执行性,堆实现了最基础的函数执行顺序,堆实现了函数之间的连续性,将函数链接成了程序。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值