gpt4 book ai didi

c - C中程序堆栈的确切内容是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 01:15:13 24 4
gpt4 key购买 nike

我想知道程序堆栈的确切内容。

分支操作是如何完成的?

使用 gdb 调试程序时内存转储是什么意思?

它是否提供程序堆栈?

TIA,普拉文

最佳答案

C 语言本身根本不强制使用堆栈 - 它定义行为而不是实现。

然而,在一般情况下,程序栈用于存储几样东西:

  • auto 存储持续时间声明的对象(即普通的、非static 局部变量);
  • 函数参数;
  • 返回地址(代码中在 return; 或到达当前函数末尾后应继续执行的位置);
  • 使用非标准 alloca() 函数分配的内存;
  • 编译器所需的临时值,例如寄存器的保存内容、alloca() 的内部管理信息、可变长度数组的大小和计算中使用的中间值。

这不是一个详尽的列表 - 其他更奇特的东西,如 Trampolines有时也存储在堆栈中。一般而言,它是工作项的临时存储区,用于在当前函数返回其调用者后不再需要的工作项。

调试器中的“回溯”显示堆栈的一些(但不是全部)内容。

关于c - C中程序堆栈的确切内容是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3090333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com