![]() |
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.
|
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; |
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.
|
Re: Liste mit TRects - Speicherleck?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz