Also direkt in _AddRef und _Release müsste sowohl die Speicherstelle des zu referenzierenden Objektes bekannt sein als auch die Speicherstelle der Variablen.
Die Speicherstelle des Objektes kannst du über einen Hook von
TInterfacedObject._AddRef
bzw.
TInterfaced._Release
auf jeden Fall loggen (
Self
). Die Speicherstelle der Variable wirst du aber nicht ermitteln können.
Dass Embacadero da irgendwas in die Richtung einbaut halte ich auch für recht unwahrscheinlich. Der automatische Aufruf von
_AddRef
und
_Release
ist sowieso schon ein "Hack".
Inzwischen denke ich, dass die automatische Referenzzählung für mich doch nicht so sinnvoll ist. Interfaces möchte ich zwar wegen der austauschbaren Funktionalitäten und einheitlicher öffentlicher Schnittstellen weiter nutzen, aber die Lebenszeit und gegenseitige Referenzen würde ich doch lieber wieder selbst verwalten.
Also falls du die Schnittstellen nur in deinem Delphi Programm verwendest und nicht z.b. aus einer C++
DLL heraus damit hantieren willst, dann könntest du die Interfaces auch durch abstrakte Klassen ersetzen.