堆栈段在程序中的作用

堆栈段在程序中的作用,第1张

分类: 电脑/网络 >>程序设计 >>其他编程语言

问题描述:

初学微机,每次编写程序时总要加入堆栈段,但是我不知道它在程序孙正运行起什么作用。望指教!

解析:

因为CPU要使用堆栈,主要是子程序调用call和ret指令,使用堆栈来存储返回地址,调用子程序的时候,后调用的子程序先返回,而且还可能嵌套调用甚至递归调用则尺悔,所以必须使用先进后出的数据结构stack来实现返回地址的存储。

没有堆栈stack,就无法实现函数/子困宏程序调用,

还有高级语言都用stack来存储局部变量和参数,汇编也可以用,但是比较麻烦。汇编经常使用stack来保存寄存器的值,PUSH和POP指令比较好用

设计原因有两点:⑴栈的存取速度特别快,仅次于寄存器。当程序要在内存中读写数据时,先找到栈,再通过栈的指向到堆内存中进行数据的读写。由于不用再遍历速度慢而且数据多的堆内存,所以程序的运行速度会更快。

⑵便于内存的回者配收。当程序的一些数据不用后,就会丢掉栈内存中相应的数据,此时以前指向的堆内存空间就没有了栈的派嫌李指向,变成了垃圾。这时Java虚拟机的垃圾回收机制就会将这块没有栈指向的堆内存空间回收,供给以后的程序使用。

堆栈的用途主要是调用子程序时暂存断点地址和保护(恢复)现场数据。堆栈是一种存储部件,即数据的写入跟读出不需要提供地址,而是根据写入的顺序决定读出的顺序尘迟。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12561697.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存