【发布时间】:2014-11-12 05:49:00
【问题描述】:
出于好奇,这只是一个简单的理论问题。我一直像个java迷。但有一件事让我想知道为什么 java 不提供在堆栈上创建对象的机制?如果我可以只在堆栈上创建小的 Point(int x,int y) 对象而不是像在 C# 上创建结构那样在堆上创建对象,那不是更有效吗? java中的这个限制背后有什么特殊的安全原因吗? :)
【问题讨论】:
-
将其放入不在堆栈中的容器中会发生什么?当您返回时,容器现在具有对已释放内存的引用。
-
@Max:大概,该语言还需要包含允许编译器对此进行检查的结构。
-
@Max:容器没有对原始的引用,它要么有它的副本,要么有它的盒装副本。 .NET/C# 在过去的 15 年里已经有了这个。 msdn.microsoft.com/en-us/library/yz2be5wk.aspx
标签: java value-type stack-memory