Forum: Algorithmen, Datenstrukturen und Klassendesign
by stahli,
11. Jan 2021
Obj.Free oder FreeAndNil(Obj) gibt erst mal nur das Objekt frei (und setzt im letzteren Fall die Variable auf NULL).
Dabei wird das ausgeführt, was Du im Destructor des Objektes festgelegt hast.
Wenn Du dort das jeweils folgende Objekt freigibst usw. (und dabei alle Objekte erwischst), dann werden alle Objekte der Liste freigegeben.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by stahli,
10. Jan 2021
Die Variablen beinhalten Pointer, die auf einen reservierten Speicherbereich zeigen, in dem die Objektdaten liegen.
Folgendes Beispiel:
var
Person1, Person2: TPerson;
...
Person1 := TPerson.Create; // hierdurch wird Speicher reserviert und der Pointer weist auf eine Speicheradresse
Person1.Name := 'Max'; // die Daten werden in dem Speicherbereich abgelegt
Person2 := Person1; // die...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by stahli,
10. Jan 2021
Herzlich willkommen erst mal. :-)
Grundsätzlich musst Du für die Freigabe eines Objektes Obj.Free oder besser FreeAndNil(Obj) aufrufen.
Der Destructor übernimmt dann nur Aufgaben des internen Aufräumens.
Schau mal, ob Dir das schon weiter hilft, ansonsten einfach nochmal fragen...