Registriert seit: 12. Jun 2002
3.483 Beiträge
Delphi 10.1 Berlin Professional
|
AW: Speicherfreigabe mit Dispose
9. Dez 2017, 19:02
TList.Items[] liefert einen untypisierten Zeiger (Datentyp Pointer). Dispose weiß somit nicht, dass sich hinter dem Zeiger ein PDataRecord befindet und wird zu einem einfachen "FreeMem" umfunktioniert, womit alle "managed" Datentypen innerhalb des Records nicht richtig aufgeräumt werden.
Beim zweiten Beispiel weiß Dispose nun vom passenden Typ und kann den Inhalt des Records (Strings, Dynamische Arrays, Interfaces) korrekt aufräumen.
|