Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Memory Leaks bei Einsatz von VTEditors bei VirtualTreeView (https://www.delphipraxis.net/138555-memory-leaks-bei-einsatz-von-vteditors-bei-virtualtreeview.html)

stachelsau 12. Aug 2009 13:54


Memory Leaks bei Einsatz von VTEditors bei VirtualTreeView
 
Hallo,

ich habe ein Problem mit Memory Leaks wenn ich die VTEditors.pas (www.soft-gems.net) einsetze. Es gab hier mal ein Thema dazu (siehe hier) aber das Problem liegt wohl tiefer.

Das über EditLink referenzierte Objekt an sich wird schon freigegeben, zumindest ist es im OnEdited-Event vom VirtualStringView nicht mehr da. Allerdings werden dabei aus irgendeinem Grund die zugehörigen Destruktoren nicht aufgerufen (TCustomEditLink.Destroy) und damit das zugehörige WinControl nicht freigegeben. Wenn ich die Kette der Destruktoren mal bis TObject zurückverfolge, dann sollte das aber eigentlich nicht sein, da TObject.Destroy virtual ist. Hat da schon mal jemand Erfahrungen mit gemacht?

VG, Daniel

stachelsau 13. Aug 2009 08:26

Re: Memory Leaks bei Einsatz von VTEditors bei VirtualTreeVi
 
OK, eigene Dummheit: Natürlich funzt die in dem anderen Thread angesprochene Lösung. Nichtdestotrotz tut die Referenzzählung von TIntfOwnedPersistent in der VTEditors.pas nicht:
Delphi-Quellcode:
function TIntfOwnedPersistent._Release: Integer;
begin
  If FOwnerInterface <> nil then
    Result := FOwnerInterface._Release
  else if not FManaged then
  begin
    Result := InterlockedDecrement(FRefCount);
    if Result <= 0 then Destroy;
  end
  else
    Result := -1;
end;
Standardmäßig wird FManaged auf true gesetzt, so dass hier niemals das Destroy aufgerufen wird. Ich habe mal FManaged auf false gesetzt, aber dann gibts ne Access-Violation in irgendwelchen Process-Handlern.
Was solls, es läuft ja.

VG, Daniel


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 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