Dispose weiß bei einem untypisiertem Zeiger nicht wie groß der Record ist.
Es gibt einfach nur den kompletten Speicherblock frei und fertig.
Wenn sich in diesem
Record Speicherblock aber referenzierte Variablen befanden, dann werden diese nicht freigegeben, denn ohne entsprechende TypeInfo (welche es bei einem typisiertem Zeiger bekommt) weiß es ja nichts davon.
dynamische Arrays, String, Interfaces und Co., welche sich in dem Record befinden könnten, werden also nicht mit freigegeben.
Zitat:
Delphi-Quellcode:
TRecord = record
Value: string;
end;
Der String bliebe somit als Speicherleck zurück.
Ein Therapeut entspricht 1024 Gigapeut.