您将如何确定系统中的堆栈是向上还是向下增长? [复制]

Posted

技术标签:

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

可能的重复:stack growth directionDoes 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) 

【问题讨论】:

“哪个更好”是什么意思?黄苹果“更好”还是红苹果? 可能重复:***.com/questions/3572610/stack-growth-direction @Mehrdad 更好的意思是我想知道当堆栈向上时它会引发堆栈溢出等问题以及堆栈下降并超过一些限制会发生什么...... 【参考方案1】:

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

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

【讨论】:

以上是关于您将如何确定系统中的堆栈是向上还是向下增长? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

我的堆栈是向上增长而不是向下增长吗? [复制]

为啥堆栈不向上增长(为了安全)?

堆栈和堆栈基地址

C 语言内存四区原理 ( 栈内存属性增长方向 | 栈内存开口方向 | 代码示例 )

栈的生长方向理解

如何判断一个C++对象是不是在堆栈上