![]() |
Memory Leaks bei Einsatz von VTEditors bei VirtualTreeView
Hallo,
ich habe ein Problem mit Memory Leaks wenn ich die VTEditors.pas ( ![]() ![]() 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 |
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:
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.
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; Was solls, es läuft ja. VG, Daniel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 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 by Thomas Breitkreuz