public class Order
{
static Customer cust = new Customer();
string sEmpty = "";
public static void main(String args[])
{
int iTotal = 10;
string sProductName = "Salt";
Ship shp = new Ship();
}
}
在上面的代码中,哪个对象和引用是在内存的哪一部分创建的? (我的意思是堆和堆栈)
(来源:c-sharpcorner.com)
答案 0 :(得分:4)
由于您标记了Java问题,我认为您的意思是Java。直接从马的嘴里出来:
Java虚拟机有一个在所有Java之间共享的堆 虚拟机线程。堆是 运行时数据区域 所有类实例的内存和 数组已分配。
以下是对前一个SO问题的link,这个问题非常详细(并且是关于该主题的语言无关的讨论)。
这是来自C#角落的文章的link,详细说明了C#中的问题。
答案 1 :(得分:1)
订单和客户在堆上。虽然Customer可以是结构,但它是引用类型(例如,类)的组合成员。
所有字符串都是引用类型,并在堆上创建。
我不确定Ship类,因为我没有声明(即,我不知道它是结构还是类)。
int iTotal变量在堆栈上创建。
C#也是如此。 Java可能有不同的规则在起作用。