您将如何确定堆栈在系统中是成长还是下降?

时间:2011-03-19 08:59:23

标签: c stack

  

可能重复:
  stack growth direction
  Does stack grow upward or downward?

大家好,

如何判断机器的堆栈是否在C内存中增长或减少。更重要的是,哪个更好:堆栈增长的系统还是堆栈增长的系统?

并且将低于逻辑工作???

void sub(int *a) 
{
int b;

if (&b > a) {
printf("Stack grows up.");
}
else  
{
printf("Stack grows down.");
}
}
main ()
{
int a;
sub(&a);
}

我的意思是这个表达式有效     ç

if (&b > a) 

1 个答案:

答案 0 :(得分:6)

堆栈首先不需要存在,当它们执行时,它们不必按照您期望的方式工作。例如,它们可以动态创建,也可以在内存中跳转。你的问题不是一个纯粹的“C”问题,因为它不可移植。

然而,假设堆栈长大或长大,那么你可以通过在调用函数内部和被调用者内部获取变量的地址来检查这一点,并检查哪些一个更大;它很简单。