Вопрос

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();
    }
}

В приведенном выше коде какой объект и ссылка создаются в какой части памяти? (Я имею в виду кучу и стек)

 alt text
(источник: c-sharpcorner.com )

Это было полезно?

Решение

Поскольку вы пометили свой вопрос Java, я предполагаю, что вы имели в виду Java. Прямо изо рта лошади:

  

Виртуальная машина Java имеет кучу, которая является общей для всей Java   потоки виртуальной машины. Куча есть   область данных времени выполнения, из которой   память для всех экземпляров классов и   массивы выделены.

JVM Spec

Вот ссылка на предыдущий вопрос SO это подробно рассматривается в этом вопросе (и является предметом, не зависящим от языка).

Вот ссылка на статью из угла C # детализация вопроса в C #.

Другие советы

Заказ и клиент находятся в куче. Хотя Customer может быть структурой, он является составным членом ссылочного типа (например, класса).

Все строки являются ссылочными типами и создаются в куче.

Я не уверен насчет класса Ship, потому что у меня нет его объявления (т.е. я не знаю, является ли он структурой или классом).

Переменная int iTotal создается в стеке.

Это верно для C #. В Java могут быть разные правила.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top