Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#2

AW: Free bei 2 Objekten mit derselben Referenz -> Ungültige Zeigeroperation

  Alt 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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat