Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Liste mit TRects - Speicherleck? (https://www.delphipraxis.net/80944-liste-mit-trects-speicherleck.html)

SirThornberry 17. Nov 2006 21:24

Re: Liste mit TRects - Speicherleck?
 
bei meinem Clear wird die Schleife nur einmal durchlaufen da Clear der eigentlichen TList nicht item für item frei gibt sondern die größe der Liste mit einem mal ändert.

Muetze1 17. Nov 2006 22:38

Re: Liste mit TRects - Speicherleck?
 
1. Wenn New(), dann bitte auch Dispose()
2. Dispose() sollte mit dem richtigen Typ aufgerufen werden.
3. Wozu gerade Clear überschreiben? Wenn ein Eintrag aus der Liste gelöscht wird, dann wird dieser nicht freigegeben!
4. Es gibt bei TList nicht umsonst ein Notify im protected Abschnitt (damit ist Punkt 3 auch erledigt):

Delphi-Quellcode:
Procedure TRectList.Notify(Ptr: Pointer; Action: TListNotification);
Begin
  If ( Action = lnDelete ) Then
    Dispose(PRect(Ptr));

  Inherited;
End;

SirThornberry 18. Nov 2006 15:14

Re: Liste mit TRects - Speicherleck?
 
biem Freigeben spielt es keine Rolle ob man Dispose den richtigen Typ übergibt. Denn beim Freigeben wird einfach geprüft ob die übergebene Speicheradresse vorher allociert wurde. Wenn dem der Fall ist werd auch genau dieser Speicherblock wieder frei gegeben.

Muetze1 18. Nov 2006 18:36

Re: Liste mit TRects - Speicherleck?
 
Zitat:

Zitat von SirThornberry
biem Freigeben spielt es keine Rolle ob man Dispose den richtigen Typ übergibt. Denn beim Freigeben wird einfach geprüft ob die übergebene Speicheradresse vorher allociert wurde. Wenn dem der Fall ist werd auch genau dieser Speicherblock wieder frei gegeben.

Wenn aber andere Typen in dem Typ enthalten sind - z.B. Strings - welche noch abgeräumt bzw. "finalisiert" werden müssen, so geschieht dies nicht, wenn der Typ ein untypisierter Zeiger ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:30 Uhr.
Seite 2 von 2     12   

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