-10
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

4

2 回答 2

4

由于您标记了您的问题 Java,我假设您的意思是 Java。直接从马嘴里说:

Java 虚拟机有一个在所有 Java 虚拟机线程之间共享的堆。堆是为所有类实例和数组分配内存的运行时数据区域。

JVM 规范

这是一个指向先前 SO 问题的链接,该问题详细讨论了这个问题(并且是关于该主题的与语言无关的讨论)。

这是C# 角的一篇文章的链接,该文章详细介绍了 C# 中的问题。

于 2009-09-13T07:51:31.843 回答
1

订单和客户在堆上。尽管 Customer 可能是一个结构,但它是一个引用类型(例如,一个类)的组合成员。

所有字符串都是引用类型,并在堆上创建。

我不确定 Ship 类,因为我没有它的声明(即,我不知道它是结构还是类)。

int iTotal 变量在堆栈上创建。

这对于 C# 来说是正确的。Java 可能有不同的规则在起作用。

于 2009-09-13T07:52:13.387 回答