Zitat von
sx2008:
Die 1. Version ist richtig; die 2. Version erzeugt ein Speicherleck.
>>warum funktioniert die 1. Version auch, obwohl FPrivVariable gar nicht "erstellt" wurde?
Weil der Speicher für das Objekt der Klasse Txyz schon reserviert wurde, bevor der Constructor aufgerufen wird.
Generell ist der Ablauf bei Delphi so:
1.) Speicher für neues Objekt reservieren
2.) Speicher mit Nullen füllen
3.) Constructor aufrufen
Im Prinzip klingt das für mich auch plausibel, ABER: Wenn ich z.B. innerhalb eines Objektes mit einer StringList arbeite und welche nicht durch den Konstruktor übergeben wird, dann muss ich diese ja im Konstruktor auch erstellen, um damit arbeiten zu können und den Speicher im Destruktor wieder freigeben. Warum? Wird der Speicher bei der Übergabe automatisch erzeugt, weil nur eine Referenz übergeben wird? Dann wäre es klar
Danke!