Zitat von
_frank_:
in etwa folgendes konstrukt:
Delphi-Quellcode:
TRec = record
...
end;
PRec = ^TRec;
var pr:PRec;
new(pr);
//werte des recs per pr^.feld setzen
someTreenode.data:=pr;
//treeview1Deletion:
if assigned(node.data) then
begin
dispose(node.data);
node.data:=nil;
end;
lt. FastMM immer unknown mem-leaks (anzahl der records). Ich hab das record durch eine Klasse ersetzt und schon gabs keine leaks mehr...warum das so ist, hab ich nicht rausfinden können...
Ist einfach zu beantworten: Dispose() will den Typ haben, damit er weiss wieviel er freigeben muss. Wenn du ihm einen Pointer gibst, dann weiss er nicht wie gross der Speicherbereich ist, den er freigeben muss. Daher darfst du ihm nicht den allgemeinen Typ von Node.Data übergeben sondern den richtigen Typ deines Records.