Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#20

Re: VirtualStringTree: Speicherleck

  Alt 1. Nov 2009, 10:48
@alzaimar:
Hier war der Record schon im Tree eingebaut.

New/Dispose reservieren Speicher, geben ihn wieder frei und machen zusätzlich noch die Initialisierung/Finalisierung.

Da der Speicher vom Record aber schon vorhanden war, fehlt hier nur noch die Initialisierung/Finalisierung.

Und eben eine stelle, wo die Finalisierung auch aufgerufen wird.

OnFreeNode scheint ja demnach wohl nicht so gut geeignet, obwohl ich das einfach nicht versteht, warum dieses nur aufgerufen wird, wenn der Node erst angezeigt wurde o.O


aber ich hätte da jetzt eine "Lösung":
Delphi-Quellcode:
Node := vst.AddChild(ParentNode);
Data := vst.GetNodeData(Node);
Include(Node.States, vsInitialUserData);
Initialize(Node);
...
Data.Text := 'gfdsvcxvy';
und schon sollte OnFreeNode aufgerufen werden
Delphi-Quellcode:
procedure TSettingsForm.vstFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
...
Finalize(NodeData^.Text);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat