AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Speicherleck bei verschachtelten Objekten
Thema durchsuchen
Ansicht
Themen-Optionen

Speicherleck bei verschachtelten Objekten

Ein Thema von LeoDD · begonnen am 14. Jan 2009 · letzter Beitrag vom 16. Jan 2009
 
LeoDD

Registriert seit: 30. Jul 2003
43 Beiträge
 
Delphi 2010 Professional
 
#1

Speicherleck bei verschachtelten Objekten

  Alt 14. Jan 2009, 13:49
Hallo liebe Delphi Gurus, wieder einmal verzweifel ich obwohl die Lösung sicher ganz nah ist.

Ich verwende mehrere Listen (TObjectList) und Ableitungen von TObjectList.

Das sieht zum Beispiel so aus:

Delphi-Quellcode:
TTC7AutoStart = class(TObjectList)

    public
      IconCache: TTC7IconCache;
      Statistic: TTC7AutoStartStatistic;
      AutostartLocations: TObjectList;
Hier noch die Deklarationen von Iconcache:

TTC7IconCache = class(TObjectList) Statistic ist ein einfacher Record.

Seit kurzem verwende ich EurekaLog um Speicherlecks zu finden. Mit Hilfe dieses Tools konnte ich bereits einige Speicherleichen beseitigen. Aber bei den TObjectLists bzw. den Ableitungen bekomme ich graue Haare.

Ich instanziiere TTC7Autostart im OnCreate Ereignis des Hauptformulars:

Delphi-Quellcode:
procedure TASManForm.FormCreate(Sender: TObject);
{
  CREATE
}

begin

  ...

  Autostarts := TTC7AutoStart.Create;
  IconUnknown:= TIcon.Create;
Im OnDestroy Ereignis will ich alles Erzeugte dann wieder freigeben:

Delphi-Quellcode:
procedure TASManForm.FormDestroy(Sender: TObject);
begin
  Autostarts.Free;
  IconUnknown.Free;
end;
Ich bekomme allerdings jedesmal eine Zugriffsverletzung bei der Freigabe der Autostarts. Laut CPU Ansicht ist das Objekt gar nicht mehr vorhanden, es scheint an anderer Stelle bereits freigegeben zu sein. Ich habe jedoch keine manuelle Freigabe vorher vorgenommen.

Wie gehe ich mit den TObjectLists in einer Ableitung von TObjectList um? Wo muss diese freigegeben werden?

Ebenso zeigt mir Eurekalog auch für das IconUnknown ein Speicherleck an, obwohl ich es doch in OnDestroy wieder freigebe.

Habe ich einen Denkfehler? Sollte ich solche Form-globalen Objekte anders instanziieren und verwenden?
Erst wenn man dreimal auf Holz klopfen will, stellt man fest, dass die Welt nur noch aus Plastik und Aluminium besteht.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz