AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

:= NIL ist gleich release?

Ein Thema von Mavarik · begonnen am 27. Apr 2006 · letzter Beitrag vom 27. Apr 2006
 
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#17

Re: := NIL ist gleich release?

  Alt 27. Apr 2006, 13:30
@Mavarik:

deine Aussage verstehe ich nicht ganz, vermute aber das du auf den Fakt hinweisen möchtest das die letzendliche Implementierungen der Methoden ._AddRef() und ._Release() abhängig vom dem Interface selber sind. Dh. der Programmierer dieses Interfaces entscheidet wie sich das Interfaces beim Aufruf von ._AddRef() und ._Release() verhalten soll.

Nun, meistens ist der Rückgabewert dieser Funktionen identisch zum internen Referenzzähler. Das bedeutet das die Funktion ._Release() eine 0 zurückgeben wird wenn das Object zerstört wurde. Und laut Definitionen die ich gelesen habe sollte ein Interfaces das Referenzzählung unterstützt mindestens <> 0 zurückgeben wenn das Interface noch lebt und immer 0 wenn das Interface zerstört wurde. Daraus folgt das Interfaces OHNE Referenzzählung immer 1 zurückgeben sollten.

Bei Interfaces mit Referenzzählung könnte man also solange ._Release() aufrufen bis 0 zurückgegeben wird. Das ist aber in dem Moment gefährlich wenn das Interface eben keine Referenzzählung unterstützt und demzufolge immer 1 zurückgibt.

Die Konvention bei ._AddRef()/._Release() nun den internen Zähler als Rückgabe zu benutzen hat den entscheidenden Vorteil das man mit einer Kombiation von ._AddRef() und ._Release() die Anzahl der Referenzen auf ein Interface in Erfahrung bringen kann. Man kann aber auch mit dem gleichen Vorgehen ermitteln ob ein Interface ein aktives Referencecounting unterstützt. Dh. sind die Rückgabewerte bei doppelten Aufrufen von ._AddRef() und ._Release() identisch so wird keine Referenzzählung unterstützt.

Gruß Hagen
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 09:12 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