Hallo zusammen!
Ich habe mir gerade mal meine werdende Anwendung mit FastMM angeschaut und auch prompt Speicherlecks gemeldet bekommen.
Ich konnte mittlerweile auch einen VST als "Täter" identifizieren. Ich füge da mehrere Knoten mit Unterknoten mit Hilfe von "AddChild" von folgender Struktur ein:
Delphi-Quellcode:
PNodeData = ^TNodeData;
TNodeData = record
Id: Integer; //Identifikation des Feldes
AuthReq: Integer; //Benötigte Authorisierung;
Text: String; //Beschriftung
end;
Im Ereignis OnFreeNode des VST mache ich folgendes:
Delphi-Quellcode:
procedure TSettingsForm.vstFreeNode(Sender: TBaseVirtualTree;
Node: PVirtualNode);
var
NodeData: PNodeData;
begin
NodeData := vst.GetNodeData(Node);
if Assigned(NodeData) then begin
//NodeData^.Text := '';
Finalize(NodeData^.Text);
end;
end;
Sooooo. Die Speicherlecks werden damit schon einmal weniger, aber es sind durchaus noch welche vorhanden. Sobald ich alle Knoten des Trees einmal aufgeklappt habe, sind sie dann alle weg.
Ist das ein Fehler vom VST oder mache ich noch etwas falsch?
Edit:
Ich habe mir gerade überlegt, ob es etwas mit den "Initialisieren" der Knoten zu tun hat und habe im Quelltext des VST folgendes gefunden:
Zitat:
// AddChild is a compatibility method and will implicitly validate the parent node. This is however
// against the virtual paradigm and hence I dissuade from its usage.
Wenn nicht mit "AddChild", wie soll ich das sonst machen?