如何找到Stack中两个局部变量的位置之间的区别?
我有一个函数,然后我必须在堆栈中添加一个局部变量。然后我必须找到该局部变量和函数的第一个参数之间的区别。
答案 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
数组中,但它们并不存在。)