Class A {
// blah blah
}
现在,每当我们需要创建此类的实例时,我们都会这样做:
A a = new A();
在c ++中有两种方式:
1. A a(10); // Created on Stack. Assume that the constructor takes an int argument
2. A a = new A(); // Created on Heap
如何在堆栈上创建用户定义的Java对象?
答案 0 :(得分:2)
不,不是。所有方法本地原始类型和引用都放在堆栈中,所有对象都放在堆中。没有ifs和buts关于它。
我能想到他们为什么这么做的一个原因是它删除了一个常见错误:将基于堆栈的对象传递给存储对该对象的引用的方法。然后,对象超出范围,从堆栈中删除,并且引用指向未定义的内容。接下来当你想要访问"对象"通过引用,你处于一个受伤的世界,因为物体不再存在 - 而且没有人知道它是什么。