Forum: Algorithmen, Datenstrukturen und Klassendesign
by jbg,
9. Dez 2017
Sicher, für untypisierte Zeiger kann man auch direkt FreeMem schreiben, aber das war schon zu TurboPASCAL Zeiten so und wird wohl auch nie geändert.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by jbg,
9. Dez 2017
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...