AW: Wie benutzt man MadExcept Memory Leak Detection?
Hallo,
Eine Stelle habe ich gefunden in VirtualExplorerTree (siehe ///!!!):
Delphi-Quellcode:
Die 2 Namespaces werden nicht freigegeben sowie man irgendwo einen VirtualExplorerListView benutzt.
procedure TCustomVirtualExplorerTree.RebuildRootNamespace;
{ This will call InitNode for the root which will look at the FRootFolderNamespace } { and rebuild with that as its root after clearing the tree. } var NewNodeData: PNodeData; begin if (RebuildRootNamespaceCount = 0) and ShellNotifyManager.OkToDispatch then begin if not (csLoading in ComponentState) and Assigned(FRootFolderNamespace) then begin if Active then begin BeginUpdate; try if ThreadedImagesEnabled then GlobalThreadManager.FlushMessageCache(Self, TID_ICON); if ThreadedExpandMarkEnabled then ExpandMarkThreadManager.FlushMessageCache(Self, TID_EXPANDMARK); // Stupid, clear AFTER flushing! July 8, 2008 Clear; if not(toHideRootFolder in TreeOptions.VETFolderOptions) then begin NewNodeData := InternalData(RootNode); FreeAndNil(NewNodeData.Namespace); RootNodeCount := 1; end else begin NewNodeData := InternalData(RootNode); if Assigned(NewNodeData) then begin FreeAndNil(NewNodeData.Namespace); NewNodeData.Namespace := TNamespace.Create(PIDLMgr.CopyPIDL(FRootFolderNamespace.AbsolutePIDL), nil); //////////!!!!!!!!!!!!!!!!!!!!!! RegisterExpectedMemoryLeak(NewNodeData.Namespace); /////////!!!!!!!!!!!!!!!!!!!!!!! ExpandNamespaceFolder(RootNode); end end; finally EndUpdate; FocusedNode := GetFirst; ChangeLinkDispatch; DoRootRebuild end; end end end end; Den 2. hab ich nicht gefunden, MadExcept finde ich da etwas kryptisch. FastMM4 werde ich nicht benutzen, es hat mir schon einmal was zerschossen. Hoffe, das bringt dich etwas weiter. |
AW: Wie benutzt man MadExcept Memory Leak Detection?
Naja, die eigentliche Ursache wird so aber nicht beseitigt.
Die Frage ist, wenn das wo erzeugt wird, dann muss es ja auch irgendwo wieder freigegeben werden. Tut das diese externe Bibliothek? |
AW: Wie benutzt man MadExcept Memory Leak Detection?
Jupp, eigentlich wäre die Lösung das Speicherleckt zu beseitigen ... drum gibt es ja auch die Suchfunktionen für Lecks.
Nur z.B. bei den Indy ist ein "Leck" drin, weil die in dem ganzen Multithreade es nicht geschafft haben etwas freizugeben. (sie fanden keine gute Stelle dafür) Aber weil sie es nicht beseitigt bekammen, haben sie es dann wenigstens registriert, damit wir es nicht sehen. (es nicht ständig gemeldet bekommen) |
AW: Wie benutzt man MadExcept Memory Leak Detection?
@TurboMagic
Hast du den source code von dem Ding mal angeguckt? Also, ich kann nicht sehen, wo das nicht wieder freigegeben wird. Leider hat sich scheints der ursprüngliche Autor von der Entwicklung zurückgezogen. @himitsu Was für Suchfunktionen kann man denn benutzen, um die Stelle zu sehen, wo der Speicher am Ende noch besetzt ist? Bei madExcept kriegt man ganz oben so threads.. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:31 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