AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Memory Leaks bei Einsatz von VTEditors bei VirtualTreeView
Thema durchsuchen
Ansicht
Themen-Optionen

Memory Leaks bei Einsatz von VTEditors bei VirtualTreeView

Ein Thema von stachelsau · begonnen am 12. Aug 2009 · letzter Beitrag vom 13. Aug 2009
Antwort Antwort
stachelsau

Registriert seit: 28. Mai 2009
7 Beiträge
 
#1

Memory Leaks bei Einsatz von VTEditors bei VirtualTreeView

  Alt 12. Aug 2009, 14:54
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
  Mit Zitat antworten Zitat
stachelsau

Registriert seit: 28. Mai 2009
7 Beiträge
 
#2

Re: Memory Leaks bei Einsatz von VTEditors bei VirtualTreeVi

  Alt 13. Aug 2009, 09:26
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:53 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