请解释一下,如果“x”是这个代码中的Stack-Dynamic变量或Heap-Dynamic变量?如果它是Heap-Dynamic那么为什么它不是Stack-Dynamic变量?谢谢
function foo(){ MyClass x = new MyClass();}
答案 0 :(得分:2)
我不确定这是什么语言,我会说它只是伪代码,但大多数常见OO语言的概念都应该相同。
让我们打破这个:
function foo() {
MyClass x = null;
x = new MyClass();
}
第一行MyClass x = null
将在本地堆栈上分配一些空间。这不是很大的空间,足以存储参考。
第二行x = new MyClass()
会做一些事情:
MyClass
x
引用更改为指向此新实例。所以简单的答案是:两者都是。
答案 1 :(得分:1)
这个特定的一个是:Dynamic-Heap(我假设你在这里用JAVA编程)。至于为什么它不在堆栈上?
有关一般说明,请参阅此文章: http://www.maxi-pedia.com/what+is+heap+and+stack