Einzelnen Beitrag anzeigen

jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: Speicherfreigabe mit Dispose

  Alt 9. Dez 2017, 18: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.
  Mit Zitat antworten Zitat