c++ - 调用函数时栈上有什么?

标签 c++ c compiler-construction programming-languages callstack

我只能想象 1)参数; 2) 局部变量;

还有什么?

1) 函数返回地址? 2) 函数名?

最佳答案

它确实取决于平台和架构,但通常:

  • 函数返回地址
  • 调用者的 CPU 寄存器的保存值 - 最重要的是,调用者的堆栈帧指针值
  • 使用 alloca() 分配的变量。
  • 有时 - 异常处理的额外内容,这非常依赖于平台。
  • 有时 - 保护值以检测堆栈破坏

据我所知,函数名称永远不会在堆栈中,除非您的代码将它放在那里。

关于c++ - 调用函数时栈上有什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5589619/

相关文章:

c++ - 如何将模板类参数转换为常量参数

c - 我不明白打印的结果

regex - 如何将正则语法转换为正则表达式?

c - 编译器 (C/C++) 如何识别注释?

c++ - 传递派生共享指针的 vector ?

c++ - 四倍精度的 Epsilon (gcc)

c# - 以编程方式启用录音设备

在 C 中复制二维数组

c - 检查 strInput 以通知用户输入对于程序来说太大时出错?

c++ - 为什么 C/C++ 程序在 Debug模式下经常会关闭优化?