Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.12;
Скачать: CL | DM;

Вниз

вот такой вот вопрос   Найти похожие ветки 

 
Palladin ©   (2002-11-30 23:22) [0]

освобождается ли класс переданный параметром процедуре...
для ясности напишу две вещи

Описание:
TSimplyClass=class
private
m_Memo:TMemo;
public
constructor Create(Memo:TMemo);
destructor Destroy;override;
property PrMemo:TMemo read m_Memo;
end;

constructor TSimplyClass.Create;
begin
m_Memo:=Memo;
m_Memo.Lines.Add("Created");
end;

destructor TSimplyClass.Destroy;
begin
m_Memo.Lines.Add("Destroyed");
end;

и вот такая вещь первая:

procedure MyDestroy(var aClass:TSimplyClass);
begin
aClass.free;
end;


эксперимент:
sc:=TSimplyClass.Create(Memo1);
MyDestroy(sc);
sc.PrMemo.Lines.Add("ква ква");


1. Освободится или нет?
2. Должна ли переменная класса в nil устанавливатся при осбождении? Судя по всему не устанавливается так так "ква ква" благополучно добавилось в мемо...

и вторая вещь: если так
передаем не ссылку на ссылку :) а саму ссылку... хотя не знаю... может и в первом случае тоже сам класс передается...

procedure MyDestroy(aClass:TObject); begin
aClass.free;
end;


и в этом случае та же самая ситуация что и в первом... "ква ква" прекрасно влезает в мемо
разъясните механизм плиз... :(


 
TTCustomDelphiMaster ©   (2002-11-30 23:51) [1]

1. Освободится или нет?

Освободится.

2. Должна ли переменная класса в nil устанавливатся при осбождении?

Не должна. Если нужно устанавливайте сами.

разъясните механизм плиз

После освобождения объекта, память занимаемая им содержит ту же информацию что и при жизни объекта, пока не будет занята под что то другое. При этом ничто не мешает программе работать так, как будто объект не был удален (жизнь после смерти :)


 
Palladin ©   (2002-11-30 23:55) [2]

:)
круто :)
все мы там будем... хорошо если не затрут :)
спасибо...



Страницы: 1 вся ветка

Текущий архив: 2002.12.12;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.013 c
14-36403
Troll
2002-11-21 18:09
2002.12.12
Подскажите прогу для защиты программы...


4-36466
Codec
2002-10-30 18:57
2002.12.12
Помогите, please, разобраться с TEdit


1-36246
Cranium
2002-12-02 03:29
2002.12.12
Контроль ввода...


1-36198
RazorbladE
2002-12-03 13:03
2002.12.12
Печать HTML страницы


3-36040
Calm
2002-11-25 14:46
2002.12.12
MS SQL: Как вернуть несколько строк с помощью Raiserror()