Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.359 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Verunsicherung mit Destructor, Free und FreeAndNil

  Alt 15. Okt 2011, 16:49
Und wenn man wirklich rumschlampen will, nimmt man eben immer 'FreeAndNil'. Dann ist man entgültig auf der sicheren Seite. Man produziert zwar überflüssigen Code, aber wem das egal ist, bitte sehr.
Wenn du so überzeugt von dir und allen, deren Code du verwendest, bist, dass du der Meinung bist, dass niemand irgendwo im Quelltext Fehler produziert, bitte...

Ich mache aber auch mal Fehler und dabei ist es von unschätzbarem Wert, wenn ich überall FreeAndNil benutzt habe. Wenn dann nämlich (egal ob in eigenem oder fremden Code) durch einen Fehler nach der Freigabe auf einen Pointer zugegriffen wird oder ähnliches, sieht man das sofort statt (besonders bei fremdem Code) stundenlang suchen zu müssen, weil irgendwo Speicher überschrieben wird...

Ich habe schon oft genug fremden Code, z.B. aus diversen Open Source Projekten, debuggen müssen. Und wenn dort dann irgendwo Schutzverletzungen aus solchen Gründen auftreten, dann suche einmal woher der ungültige Pointer kam. Und das nur, weil eben nur das Objekt freigegeben wurde, aber der Pointer nicht auf nil gesetzt wurde...
Dann bin ich z.B. vor einigen Monaten bei einem solchen Problem in einer Komponentensammlung einmal durchgegangen und habe per RegEx an ca. 1000 Stellen Free durch FreeAndNil ersetzt und hatte dann das Problem in wenigen Minuten gefunden... (nachdem ich vorher schon eine ganze Weile erfolglos debuggt hatte...)
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat