Stack中的局部变量 - > C

时间:2014-03-11 10:54:29

标签: c stack

如何找到Stack中两个局部变量的位置之间的区别?

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

1 个答案:

答案 0 :(得分:3)

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数组中,但它们并不存在。)

相关问题