c - Stack 中的局部变量 -> C

标签 c stack

如何找出两个局部变量在 Stack 中的位置差异?

我有一个函数,然后我必须向堆栈添加一个局部变量。然后我必须找到该局部变量和函数的第一个参数之间的区别。

最佳答案

C 中没有“堆栈”,根据语言规则,您提出的建议是不可能的。您可以尝试使用以下构造,它可以做您想要的,但要知道它具有未定义的行为:

void foo(int arg)
{
  double x;

  ptrdiff_t diff = (char const *)(&x) - (char const *)(&arg);
  printf("Difference between %p and %p: %td\n", (void*)(&x), (void*)(&arg), diff);
}

输出取决于您的实现细节。查看生成的机器代码以获取此信息可能更容易。

(该代码具有未定义的行为,因为它假装所有变量都存在于某个大型 char 数组中,而实际上它们并不存在。)

关于c - Stack 中的局部变量 -> C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22323576/

相关文章:

c - 用C实现 "strings"的堆栈

c - 机器之间堆栈粉碎行为不同的原因

Java 堆栈 push() 与 add()

c - 使用序列化二叉搜索树对海量数据进行排序

c - 下面的阶乘查找 C 程序有什么错误?

C - 这个语法是关于什么的? <<

javascript - clearInterval() 如何清除 setInterval() 中的 timerID?

c - 如何优化MAC的搜索

c - scanf 更改其他字符串的值

java - 尝试用Java创建一个堆栈计算器