Thema: Records

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#15

AW: Records

  Alt 3. Nov 2023, 20:12
Managed Typen sind immer initialisiert (außer jemand pfuscht mit Pointern rum und verwendet die falsche Methode, zum Reservieren des Speichers)

Globale Variablen und Thread-Variablen werden durch Windows immer initialisiert (standardmäßig mit 0),
außer es wurde für eine globale Variable ein Initialisierungs-Wert angegeben.
Genauer gesagt, liegen globale Varaiblen in eine Sektion (Speicherbereich) der EXE/DLL.

Objekt-Felder (die Variablen in Delphi-Objekten) sind ebenfalls immer mit 0 initialisiert.
siehe das FillChar in TObject.InitInstance

Lokale Variablen (also auf dem Stack) sind normal nicht initialisiert.
* Ausnahme sind Managed Typen
Result ist nicht initialisiert
* Ausnahme sind Managed Typen (nur sind sie nicht dort initialisiert, wo ihr es denkt )
* neuerdings werden z.B. Boolean-Results mit False initialisiert, weil ständig zuviele Leute grob fahrlässig die Compiler-Warnungen nicht lesen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat