可能的重复:
堆栈增长方向
堆栈是向上还是向下增长?
大家好,
我怎样才能知道机器的堆栈是否在C内存中增长或减少.更重要的是,哪个更好:堆栈增长的系统还是堆栈增长的系统?
以下逻辑工作???
void sub(int *a)
{
int b;
if (&b > a) {
printf("Stack grows up.");
}
else
{
printf("Stack grows down.");
}
}
main ()
{
int a;
sub(&a);
}
Run Code Online (Sandbox Code Playgroud)
我的意思是这个表达式在C中有效
if (&b > a)
Run Code Online (Sandbox Code Playgroud)
堆栈甚至不必首先存在,当它们这样做时,它们不必按照您期望的方式工作.例如,它们可以动态创建,也可以在内存中跳转.你的问题不是一个纯粹的"C"问题,因为它不可移植.
但是,假设堆栈长大或长大,那么你可以通过在调用函数内部和被调用者内部获取变量的地址来检查这一点,并检查哪一个更大; 这很简单.