您如何确定机器的堆栈是否在内存中成长还是向下? (Java)[英] How would you find out if a machine’s stack grows up or down in memory? (JAVA)

本文是小编为大家收集整理的关于您如何确定机器的堆栈是否在内存中成长还是向下? (Java)的处理方法,想解了您如何确定机器的堆栈是否在内存中成长还是向下? (Java)的问题怎么解决?您如何确定机器的堆栈是否在内存中成长还是向下? (Java)问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我有一个C程序来检查机器堆栈是否在内存中成长或向下.

那样:

#include <stdio .h>

void sub(int *a) {
 int b;

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

main () {
 int a;
 sub(&a);
}

现在我想在Java中做同样的事情. : - )

任何人都知道解决方案而不编写任何本机代码???

谢谢

推荐答案

如果您不执行任何本机代码,那么我无法想象在纯Java代码中可能重要的情况.毕竟,Java堆栈可以完全朝任何方向分配,而不是严格连续的内存块(例如机器堆栈).

其他推荐答案

Java源代码将Java字节代码编译为JAVA BYTE代码,这是一个像JVM上运行的语言一样的汇编. JVM是一台虚拟机,因此在使用堆栈和堆栈的机器上,它看起来完全相同 .

因此,不可能知道在特定的机器上是否从Java代码向上或向下生长.

其他推荐答案

这不能在Java代码中完成.也不能在C代码中完成.您发布的代码调用不确定的行为(&b > a).根据标准,除非指针指向同一数组中的元素,否则比较两个指针的结果是不确定的.该标准没有说明堆栈增长的方向或是否存在堆栈.

本文地址:https://www.itbaoku.cn/post/359237.html