Форум: "Начинающим";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
ВнизRecord в class Найти похожие ветки
← →
bns (2006-11-02 15:01) [0]В моем классе присутствует record:
-------------------------------------
type TMyRecord = record
str : string;
int : integer;
end;
type TMyClass = class
public
myrecord : TMyRecord;
end;
-------------------------------------
Нужно ли после созданиия класса mc:=TMyClass.Create создавать record New(mr)?
В тестовом примере, что я делал - не нужно, myrecord создается сама. Почему это происходит?
Освобождается ли память от TMyRecord после mc.Free или нужно делать Dispose( mr )?
Спасибо.
← →
Сергей М. © (2006-11-02 15:09) [1]
> Нужно ли после созданиия класса mc:=TMyClass.Create создавать
> record New(mr)?
Не нужно. Да и компилятор даст тебе по мозгам за такие дилетантские потуги.
(*)
> Освобождается ли память от TMyRecord после mc.Free или нужно
> делать Dispose( mr )?
см. (*)
← →
DevilDevil © (2006-11-02 15:16) [2]> Нужно ли после созданиия класса mc:=TMyClass.Create создавать record New(mr)?
Нет
> Почему это происходит?
Начнём с того, чтоNew
иDispose
работают с указателями. Переменная типа TMyRecord - это не указатель, а полноценная переменная. А вот если бы ты объявилpublic
myrecord : ^TMyRecord;
, то переменная являлась бы указателем на неизвестно какую область в памяти. Поэтому и существуетNew
: сначала динамически выделяется память, потом твоя переменная становится указателем на эту выделенную память. Но так лучше не делать...
> Освобождается ли память от TMyRecord после mc.Free
Да. Физическиmyrecord
находится в памяти, которая была выделена под классTMyClass
. При освобожденииTMyClass
, освобождаетсяmyrecord
.
> Спасибо.
Пожалуйста
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.044 c