Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
Delphi 12 Athens
|
AW: Free bei 2 Objekten mit derselben Referenz -> Ungültige Zeigeroperation
15. Apr 2017, 15:35
obj1 und obj2 sind Instanzvariablen, das heißt, sie zeigen auf die Instanz eines Objekts oder sind nil. Selbst wenn obj 1 und obj2 auf dieselbe Instanz zeigen, wissen beide Variablen nichts voneinander. Mann kann also einfach eine oder beide auf nil setzen ohne daß sich die beiden stören. Die Objekt-Instanz bleibt davon ebenfalls unbeeinflusst.
Wenn diese Variable nicht nil ist, gibt FreeAndNil nun das Objekt frei, auf das die übergebene Variable zeigt, und setzt die Variable auf nil. Die andere Variable zeigt dann immer noch auf die Objekt-Instanz, die aber nun schon freigegeben ist - die Variable zeigt also sozusagen auf einen ungültigen Speicherbereich. Ein erneutes Freigeben führt dann zu einem Fehler.
|