Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.02.10;
Скачать: [xml.tar.bz2];

Вниз

Утечка памяти   Найти похожие ветки 

 
Lexa   (2003-01-31 12:54) [0]

Скажите образуется ли утечка памяти,если я не уничтожаю объект а просто присваиваю ему предка.

type
TMyButton=class(TButton)
............
end;
TsecondButton=class(TMyButton)
...........
end;
......
var
Button:TMyButton;
begin
Button := TMyButton.Create(Form1);
Button := TSecondButton.Create(Form1);
end.


 
han_malign   (2003-01-31 12:58) [1]

Естественно - для классов референсы автоматически не прокатывают - только для открытых строк, динамических массивов и COM интерфейсов


 
REA   (2003-01-31 13:11) [2]

В данном случае нет, поскольку владельцем кнопки становится форма и она ее уничтожит, но ссылку ты теряешь.


 
Calm   (2003-01-31 13:20) [3]


> В данном случае нет,

Это как это "нет" ???

han_malign © (31.01.03 12:58) прав!


 
Palladin   (2003-01-31 13:24) [4]

2 Calm

так это нет
объект зарегестрирован во владельце... и тот его удалит в свое время... просто достучатся к нему уже неоткуда..


 
REA   (2003-01-31 13:25) [5]

Классы наследники TButton, который наследник TComponent, делает следующее:

constructor TComponent.Create(AOwner: TComponent);
begin
FComponentStyle := [csInheritable];
if AOwner <> nil then AOwner.InsertComponent(Self);
end;

destructor TComponent.Destroy;
begin
Destroying;
if FFreeNotifies <> nil then
begin
while Assigned(FFreeNotifies) and (FFreeNotifies.Count > 0) do
TComponent(FFreeNotifies[FFreeNotifies.Count - 1]).Notification(Self, opRemove);
FreeAndNil(FFreeNotifies);
end;
DestroyComponents;
if FOwner <> nil then FOwner.RemoveComponent(Self);
inherited Destroy;
end;

procedure TComponent.DestroyComponents;
var
Instance: TComponent;
begin
while FComponents <> nil do
begin
Instance := FComponents.Last;
if (csFreeNotification in Instance.FComponentState)
or (FComponentState * [csDesigning, csInline] = [csDesigning, csInline]) then
RemoveComponent(Instance)
else
Remove(Instance);
Instance.Destroy; end;
end;



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

Форум: "Основная";
Текущий архив: 2003.02.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.014 c
7-29113
arc
2002-12-04 15:38
2003.02.10
Из памяти на диск


1-28773
Chizh
2003-01-16 22:58
2003.02.10
Подскажите, plz, как скопировать файлы из буфера обмена


1-28818
SaperXL
2003-01-31 03:58
2003.02.10
RichEdit - прокрутка вертикального скролла вниз


3-28616
cOrps
2003-01-23 11:09
2003.02.10
говорят легко


1-28693
edell
2003-01-29 22:09
2003.02.10
блокировка клавы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский