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 Unbenutzte Objekte erkennen (https://www.delphipraxis.net/120172-unbenutzte-objekte-erkennen.html)

bernau 13. Okt 2008 10:09

Re: Unbenutzte Objekte erkennen
 
Zitat:

Zitat von Jelly
Oder besser gleich alle Objekte in eine TObjectList aufnehmen, und diese Liste einfach am Ende freigeben. Die ObjectList hat die Funktionalität, beim Freigeben alle enthaltenen Objekte mit freizugeben.


Hhmmm? Wie der OP vorher geschrieben hat, werden die Objekte teilweise freigegeben und teilweise nicht. Eine Objektliste merkt aber nicht, daß ein Objekt freigegeben wurde. Der Zeiger ist immer noch vorhanden. Wenn nun die Objektliste versucht ein Objekt freizugeben, welches gar nicht mehr vorhanden ist, dann dürfte es krachen.

Relicted 13. Okt 2008 10:23

Re: Unbenutzte Objekte erkennen
 
Ich werfe einfach mal ein Wort in den Raum was dir alle Sorgen abnimmt... Keine Referenz kein Objekt:
"Interfaces"

Gruß
reli

bernie110 15. Okt 2008 19:03

Re: Unbenutzte Objekte erkennen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Jelly
Oder besser gleich alle Objekte in eine TObjectList aufnehmen, und diese Liste einfach am Ende freigeben. Die ObjectList hat die Funktionalität, beim Freigeben alle enthaltenen Objekte mit freizugeben.

Letztlich hat nur _dieser_ Hinweis die Lösung gebracht, nachdem meine anderen Ideen immer wieder zu Fehlern führten.

Also habe ich eine zusätzliche Liste erzeugt, die nur dazu da ist, die Objekte zu listen und am Ende wieder freizugeben.

Nun habe ich laut FastMM nur noch 2 Leaks übrig, von denen ich aber nicht wieß, wie ich sie beseitigen kann; möglicherweise ist ja auch noch ein Bug in den Standard-Modulen?

Kurzfassung:
Zitat:

A memory block has been leaked. The size is: 68

Stack trace of when this block was allocated (return addresses):
402A97 [System][@GetMem]
404043 [System][TObject.NewInstance]
40440A [System][@ClassCreate]
404078 [System][TObject.Create]
762197C5 [Unknown function at SHFree]
4D05F3 [ShellCtrls][TShellFolder.Create]
4D03F9 [ShellCtrls][CreateRootFromPIDL]
4D0549 [ShellCtrls][CreateRootFolder]
76F38A2F [GetClientRect]
4608B0 [Controls][TWinControl.GetClientRect]

The block is currently used for an object of class: TStringList

...

A memory block has been leaked. The size is: 52

Stack trace of when this block was allocated (return addresses):
402A97 [System][@GetMem]
404043 [System][TObject.NewInstance]
40440A [System][@ClassCreate]
4D05B3 [ShellCtrls][TShellFolder.Create]
4D03F9 [ShellCtrls][CreateRootFromPIDL]
4D0549 [ShellCtrls][CreateRootFolder]
76F38A2F [GetClientRect]
4608B0 [Controls][TWinControl.GetClientRect]
4D1E9C [ShellCtrls][TCustomShellTreeView.CreateRoot]
4D2CB1 [ShellCtrls][TCustomShellTreeView.Loaded]

The block is currently used for an object of class: TShellFolder
Die komplette FastMM-Ausgabe ist im Anhang - hat jemand von Euch eine Idee oder gar die Lösung?

Danke für Eure Beiträge! :thumb:

hitzi 6. Nov 2008 13:29

Re: Unbenutzte Objekte erkennen
 
Hab grad das selbe Problem bei mir festgestellt - hier steht die Lösung: http://www.bpsoftware.com/blog/labels/Fixes.html


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

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 by Thomas Breitkreuz