请解释一下,在这段代码中,"x“是堆栈动态变量还是堆动态变量?如果是堆动态变量,那么为什么不是堆栈动态变量?谢谢。
function foo(){ MyClass x = new MyClass();}发布于 2015-12-20 21:43:32
调用函数时,堆栈动态变量就会出现。它们存在于C++运行时堆栈中,并且是临时的。它们要么在参数列表中,要么在函数中声明(除非在堆栈上没有实例化的静力学)。当这些变量超出作用域时,它们就会消失,其内容的内存将由运行时回收。
堆动态实例存在于运行时保留的另一个内存区域,称为“堆”。这些实例是通过。“新”运算符,必须由“删除”运算符显式取消分配。
我希望这能帮上忙
发布于 2013-01-06 18:38:58
我不知道这是哪种语言,我会说它只是伪代码,但是大多数普通的OO语言的概念应该是相同的。
让我们把这个分解一下:
function foo() {
MyClass x = null;
x = new MyClass();
}第一行MyClass x = null将在本地堆栈上分配一些空间。它没有太多的空间,只是足够存储一个参考资料。
第二行x = new MyClass()将做一些事情:
MyClass调用正确的构造函数x引用更改为指向此新实例。所以简单的答案是:两者都是。
发布于 2013-01-06 18:29:32
这个特定的例子是:Dynamic(我假设您在这里用JAVA编程)。为什么它不在堆栈上?
请参阅本文以获得一般指导:http://www.maxi-pedia.com/what+is+heap+and+stack
https://stackoverflow.com/questions/14185235
复制相似问题