Главная страница
    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.009 c
14-28991
Дмитрий К.К.
2003-01-26 12:43
2003.02.10
---|Ветка была без названия|---


1-28695
Lexa
2003-01-31 12:54
2003.02.10
Утечка памяти


4-29177
BigDAN
2002-12-25 14:35
2003.02.10
Взведена ли критическая секция???


1-28908
Alexey V
2003-01-30 16:01
2003.02.10
Мастера ! Неужели никто не поможет с OpenDialog


14-29076
Supreme
2003-01-25 01:51
2003.02.10
декомпиляция SWF





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский