Size: a a a

2020 February 08

AS

Alexey Shumkin in Delphi & Lazarus
Kit Bayun
это?
Типа того
источник

AS

Alexey Shumkin in Delphi & Lazarus
? Зачем это тут?
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Юмора ради
источник

VA

Viktor Akselrod in Delphi & Lazarus
Весь юмор в флудилке плз
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Viktor Akselrod
Весь юмор в флудилке плз
?
источник

VA

Viktor Akselrod in Delphi & Lazarus
Песни, картинки и прочее не относящееся к тематике чата в группу флудилки
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Viktor Akselrod
Песни, картинки и прочее не относящееся к тематике чата в группу флудилки
Я не знаю такой
источник

VA

Viktor Akselrod in Delphi & Lazarus
источник

AS

Alexey Shumkin in Delphi & Lazarus
Kit Bayun
это?
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Геннадий Малинин
Я тоже так пару раз обжигался
насколько я помню, то компилятор не выдает сообщения на это. но статичеcкие анализаторы видят проблему, так же видят когда inherited не вызывался в деструкторе - это тоже может вызвать утечки
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Kit Bayun
да, залез в геном, вижу destructor Destroy; virtual;
вообще, по сырцам очень полезно побродить. многие вопросы и непонятки отпадают сами
Destroy там не совсем пустой. он освобождает место в памяти от самого инстанса TObject
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Kit Bayun
destructor TKvxListsStyles.Destroy;
begin
 if Assigned(TypesList) then
   TypesList.Free;

 if Assigned(RegionsList) then
   RegionsList.Free;
 Inherited;
end;
теперь норм
Assigned тут лишний. Free сам всё проверит
источник

VA

Viktor Akselrod in Delphi & Lazarus
Dmitry Belkevich
вообще, по сырцам очень полезно побродить. многие вопросы и непонятки отпадают сами
Destroy там не совсем пустой. он освобождает место в памяти от самого инстанса TObject
дестрой не освобождает память, занимаемую инстансом.
дестрой нужен для освобождения пользовательских ресурсов.
вызов унаследованного деструктора для наследуемых от TObject классов хоть и не является обязательным, но является правилом хорошего тона.
источник

DB

Dmitry Belkevich in Delphi & Lazarus
ок, как объяснить сей феномен
источник

DB

Dmitry Belkevich in Delphi & Lazarus
коллстэк:
источник

DB

Dmitry Belkevich in Delphi & Lazarus
источник

DB

Dmitry Belkevich in Delphi & Lazarus
источник

DB

Dmitry Belkevich in Delphi & Lazarus
procedure TObject.FreeInstance;
begin
 CleanupInstance;
 _FreeMem(Pointer(Self));
end;
источник

VA

Viktor Akselrod in Delphi & Lazarus
все верно. но НЕ вызов унаследрванного деструктора НЕ прерывает эту цепочку.
источник

DB

Dmitry Belkevich in Delphi & Lazarus
именно тут происходит освобождение от tobject, вызов идет из tobject.destroy
источник