Существование массива объектов в куче - PullRequest
0 голосов
/ 05 ноября 2011

Если класс имеет массив в качестве члена и если создан объект класса, то где этот объект массива находится. Я имею в виду, что объект класса остается в куче, поэтому этот объект массива остается как объект в объекте этого класса, или он имеет независимое существование в куче с некоторой связью с объектом класса.

1 Ответ

0 голосов
/ 06 ноября 2011

Поскольку вы говорите о том, где в памяти находятся вещи и объекты, я думаю, вы имеете в виду C ++.Если это не так, как сказал Мэтт, это может помочь уточнить ваш вопрос, чтобы кто-то, кто знает о языке, который вы используете, мог ответить:).

В C ++, находится ли массив элементов внутриПамять объекта или отдельно в куче зависит от того, как объявлен массив: статические массивы-члены будут размещаться внутри объекта, в то время как динамические массивы-члены будут существовать в новой динамической памяти.


Если вы объявитестатически массив:

class MyStaticArrayClass
{
    int myArray[10];
    // ...
};

Если вы объявите объект MyStaticArrayClass, массив будет находиться внутри самого объекта MyStaticArrayClass.То есть, если вы объявляете свой объект в стеке:

MyStaticArrayClass myObject;

Содержимое myArray также будет в стеке, а если вы объявляете свой объект в куче:

MyStaticArrayClass * myObjectPtr = new MyStaticArrayClass;

Тогда содержимое myArray будет в куче, но внутри памяти, на которую указывает myObjectPtr (деструктор по умолчанию для MyStaticArrayClass позаботится об освобождении этой памяти для вас при вызове delete myObjectPtr;).


Если вы объявляете массив динамически:

class MyDynamicArrayClass
{
    int * myArray;
    // constructor initializes to myArray = new int[10];
    // ...
};

Если вы объявляете объект MyDynamicArrayClass, массив будет находиться в куче, вне самого объекта MyDynamicArrayClass.(Вам нужно написать собственный деструктор для вызова delete [] myArray).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...