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!