assembly - 为什么我们必须清理堆栈

标签 assembly stack

我正在上汇编课,我们目前正在学习堆栈。据我所知,所有被插入堆栈的东西最终都必须被弹出(清理堆栈)。为什么我们绝对需要清理堆栈?我读到它是为了防止内存泄漏,是吗?

非常感谢

最佳答案

对于给定的执行线程,只有一定数量的堆栈。

它的用途是临时保存调用函数时需要的数据(例如返回地址和传递给函数的参数)。

如果您在函数退出时清理堆栈,您最终会耗尽堆栈空间。

此外,作为超越堆栈的一般规则,您的程序使用的任何资源(堆栈空间、堆空间、文件句柄等)都应保留尽可能短的时间,以提高整体效率。

关于assembly - 为什么我们必须清理堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9832312/

相关文章:

ios - iPhone的堆栈大小是固定的吗?

assembly - x86-64 操作数的汇编顺序

c - ATT 中从汇编代码恢复 C 代码的不同答案

assembly - Cortex M - IRQ 禁用的原子性

macos - lldb 不允许设置断点也不允许列出源文件

c++ - 动态堆栈分配(来自 Thinking in C++)

stack - 堆栈的实际应用

c - 从文件中读取一行并用 C 解析它

c++ - 我可以通过编程推断出 C++ dll 使用的调用约定吗?

c - 从输入参数声明自动变量的数组大小