Thema: Delphi Leak verzweifelt gesucht

Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#5

Re: Leak verzweifelt gesucht

  Alt 4. Nov 2006, 18:57
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.
  Mit Zitat antworten Zitat