我有一个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);
}
Run Code Online (Sandbox Code Playgroud)
现在我想在Java中做同样的事情.:-)
没有编写任何本机代码,任何人都知道解决方案???
谢谢
Gre*_*ill 14
如果您没有使用任何本机代码,那么我无法想象在纯Java代码中可能存在的问题.毕竟,Java堆栈可能在任何方向上分配,而不是严格连续的内存块(如机器堆栈).
Java源代码编译为Java字节代码,这是一种在JVM上运行的类似汇编的语言.JVM是一个虚拟机,所以它看起来完全一样的定义都在使用堆叠和堆栈下机.
因此,无法知道特定机器堆栈是否从Java代码增长或减少.
这不能在Java代码中完成.它也不能用C代码完成.您发布的代码调用未定义的行为(&b > a).根据标准,比较两个指针的结果是未定义的,除非指针指向同一数组中的元素.标准没有说明堆栈增长的方向或堆栈是否存在.
| 归档时间: |
|
| 查看次数: |
11390 次 |
| 最近记录: |