![]() |
AW: Zugriffsverletzung beim Zerstören der TIniFile-Instanz
Zitat:
|
AW: Zugriffsverletzung beim Zerstören der TIniFile-Instanz
FreeAndNil kopiert nur den Objektzeiger
und setzt vor dem Free die originale Variable auf NIL. (erspart sich so ein TryFinally)
Delphi-Quellcode:
Ohne ARC, passiert mit der Objekt-Referenz nichts. (das kopieren der Variable macht nichts, außer den Pointer/Integer zu kopieren)
Temp := VAR; // mit ARC sind einfach die Zeilen 1 und 3 nutzlos und werden weggelassen
VAR := nil; Temp.Free; // statt try VAR.Free; finally VAR := nil; end; Und mit ARC wird effektiv nur die VARiable auf NIL gesetzt. (original würde die Variable kopiert, dabei AddRef/INC ausgeführt, dann die alte Variable auf NIL gesetzt und somit ReleaseRef/DEC, und am Schluß Free, was aber im bei ARC garnichts macht) PS: Das Application.FormCreate ist gegenüber dem TForm.Create das Selbe, wie FreeAndNil gegenüber einem Free. Dort wird die Variable zuerst gesetzt, bevor Create ausgeführt wird. (eigentlich wird die Variable ja erst gesetzt, nachdem das Create fertig ist, was blöd ist, wenn eine Form-Referenz in der DFM vorkommt, oder jemand im Create oder einem Property-Setter so blöd ist und die globale Form-Variable benutzt, anstatt Self) Und beim FreeAndNil wird eben die Variable gelöscht, bevor Destroy ausgeführt wird. |
AW: Zugriffsverletzung beim Zerstören der TIniFile-Instanz
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Wie sieht denn der Stacktrace aus bzw. was passiert, wenn du in das Free hinein debuggst? Eigentlich sollte dort Self = nil sein und somit kein Code ausgeführt werden: Anhang 53590 Bist du sicher, dass nicht FastMM oder ähnliches aktiv ist? Denn die prüfen so etwas und lösen dann eine Exception aus. |
AW: Zugriffsverletzung beim Zerstören der TIniFile-Instanz
Zitat:
|
AW: Zugriffsverletzung beim Zerstören der TIniFile-Instanz
Zitat:
Bei FastMM passiert (eben getestet) in der Tat nichts. |
AW: Zugriffsverletzung beim Zerstören der TIniFile-Instanz
Ich tippe schlichtweg auf Test-Case-Error. Ich kann mir nicht vorstellen, dass mein Beispiel in irgendeiner Delphi-Version (eventuell nach Anpassung der uses-Anweisung) eine Exception auslöst.
|
AW: Zugriffsverletzung beim Zerstören der TIniFile-Instanz
Sind da vielleicht noch Threads am Arbeiten, die irgendein Problem haben (und es nur so aussieht, als läge es am TIniFile)?
|
AW: Zugriffsverletzung beim Zerstören der TIniFile-Instanz
Zitat:
|
AW: Zugriffsverletzung beim Zerstören der TIniFile-Instanz
Zitat:
|
AW: Zugriffsverletzung beim Zerstören der TIniFile-Instanz
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz