【问题标题】:How will you find out if a stack grows up or down in a system? [duplicate]您将如何确定系统中的堆栈是向上还是向下增长? [复制]
【发布时间】:2011-07-18 16:22:15
【问题描述】:

可能的重复:
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);
}

我的意思是这个表达式在 C

if (&b > a) 

【问题讨论】:

  • “哪个更好”是什么意思?黄苹果“更好”还是红苹果?
  • @Mehrdad 更好的意思是我想知道当堆栈向上时它会引发堆栈溢出等问题以及堆栈下降并超过一些限制会发生什么......

标签: c stack


【解决方案1】:

堆栈甚至不必从一开始就存在,当它们存在时,它们也不必按照您期望的方式工作。例如,它们可以动态创建,也可以只是在内存中跳转。您的问题并不是真正的纯“C”问题,因为它不可移植。

但是,假设堆栈要么增长要么增长,那么你可以通过在调用函数和被调用函数中获取变量的地址来检查这一点,并检查查看哪个一个更大;很简单。

【讨论】:

    猜你喜欢
    • 2011-12-28
    • 2015-02-21
    • 2011-02-06
    • 2010-10-14
    • 1970-01-01
    • 2011-04-04
    • 2011-03-23
    • 1970-01-01
    相关资源
    最近更新 更多