Einzelnen Beitrag anzeigen

Cashew

Registriert seit: 15. Mär 2017
24 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Generics - Memory Leak wenn constructor ohne inherited Create

  Alt 8. Mär 2019, 17:25
Hallo zusammen,

ich denk mal dass die Klassenstruktur aus dem folgenden Beispielgängige Praxis ist:

Delphi-Quellcode:
  { TMyItem }
  //----------------------------------------------------------------------------
  TMyItem = class
  private
    FInfo : string;
  public
    constructor Create;
    destructor Destroy; override;
    property Info : string read FInfo write FInfo;
  end;

  { TMyItems }
  //----------------------------------------------------------------------------
  TMyItems = class (TObjectList<TMyItem>)
  public
    constructor Create;
    destructor Destroy; override;
    procedure AddItem(const AValue:TMyItem);
  end;

Ich habe heute in meinem Programm, in der *.dpr Datei die Option ReportMemoryLeaksOnShutdown eingeschaltet. Und habe beim Schließen der Anwendung dann die Info bekommen, das ich "Speicherlöcher" habe... Hervorgerufen durch nicht freigegebene TMyItem Instanzen...

Ich bin dann darauf gekommen, dass der Fehler an meinem constructor von der Klasse TMyItems liegt. Denn hatte ich wie folgt implementiert:

Delphi-Quellcode:
constructor TMyItems.Create;
begin
  inherited;
end;
Nachdem ich dann das inherited; auf inherited Create; geändert hatte waren meine "Speicherlöcher" weg...

Woran liegt das? Ich dachte das die Angabe von inherited ausreichend ist... Oder bin ich da heut gedanklich auf dem Holzweg?
What goes arround, comes arround
  Mit Zitat antworten Zitat