如何找出两个局部变量在 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/