AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Abfragen ob eine Variable oder die Referenz noch existiert
Thema durchsuchen
Ansicht
Themen-Optionen

Abfragen ob eine Variable oder die Referenz noch existiert

Ein Thema von Cyberaxx · begonnen am 25. Sep 2007 · letzter Beitrag vom 26. Sep 2007
 
Muetze1
(Gast)

n/a Beiträge
 
#12

Re: Abfragen ob eine Variable oder die Referenz noch existie

  Alt 25. Sep 2007, 23:01
Es wäre komplett kein Unterschied. Delphi kennt keine auto-generated Copy Constructoren und somit hast du immer nur Zeiger auf die Objekte an sich. Somit ist es egal wie du den Aufruf des Destructors ausführst, es wird immer diese eine Instanz freigegeben. Die TCollection wie auch die lokale Variable oder AClient beinhalten immer nur die Adresse (sie ist intern ein Pointer) wo die Objektinstanz im Speicher liegt. Alle 3 zeigen auf einen Speicherbereich und wenn du diesen freigibst zeigen immernoch alle 3 Elemente auf diesen Speicherbereich (wo nichts mehr ist) und Zugriffe auf diese Elemente sind somit böse (eigentlich sollte man sofort was auf die Finger bekommen). Damit letzteres passiert, müssten die Adressen zurückgesetzt werden. Am besten eignet sich die Adresse 0 (nil), weil beim Zugriff auf solche Adressen werden vom Prozessor (durch die LDT/GDT) nicht erlaubt und er erzeugt eine entsprechende Ausnahme (endet bei uns in einer Exception) und wir bekommen eine entsprechende Meldung. Bei der ganzen Erklärung merkt man schon, dass es schwierig wird, alle Variablen welche auf ein und die gleiche Instanz zeigt, wieder ordentlich auf nil zu setzen, damit man mitbekommt ob die Instanz noch existiert. Zur Zeit hat noch ein anderer Threadersteller mit genau diesem Phänomen ein Problem.

Also: Welches Element du nun nimmst um es freizugeben: es ist immer nur eine Instanz da und die gibst du ja frei.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:27 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-2025 by Thomas Breitkreuz