Einzelnen Beitrag anzeigen

guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#1

VirtualStringTree: Speicherleck

  Alt 27. Okt 2009, 13:01
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?
  Mit Zitat antworten Zitat