Einzelnen Beitrag anzeigen

enigma

Registriert seit: 15. Jun 2008
35 Beiträge
 
#1

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

  Alt 15. Apr 2017, 14:28
Hallo zusammen,

ich brauche wg. Typumwandlung ( list := TObjectList<TDN>(AObject) )
2 Objekte (also list u. AObject), die ich manuell freigeben muss.

Meine Frage (s. Quellcode):
gibt FreeAndNil(obj1) auch obj2 frei u. wenn ja, wie kann ich prüfen, ob auch
der Inhalt von obj2 aus Speicher freigegeben ist?
Und weshalb kann ich obj1 mehrfach freigeben u. obj2 nicht mehr?
Meine Idee ist:
Sowohl den Speicher von obj1 u. obj2 freigeben u. beide auf nil setzen.

Delphi-Quellcode:
procedure testFreeAndNil;
var
  obj1, obj2: TestKlasse;
begin
  obj1 := TestKlasse.Create;
  obj2 := obj1;

  FreeAndNil(obj1);
  obj1.Free; {klappt auch nach obigem FreeAndNil(obj1) }
// obj2.Free; {falls nicht auskommentiert: Ungültige Zeigeroperation}

end;
  Mit Zitat antworten Zitat