Folgender Fall:
Eine COM-Klasse X beinhaltet ein Property Y zu einer anderen COM-Klasse, die die Methode Z implementiert.
Wird jetzt x.y.z aufgerufen, so wird der Referenzzähler von y automatisch hochgezählt, aber nicht mehr dekrementiert.
Wird jedoch x.y in einer Variablen zwischengeparkt, anschließend davon die Methode z aufgerufen und dann der temporären Variablen Nil zugewiesen, so ist der Referenzzähler von y am Ende wieder korrekt.
Somit liegt der Schluß nahe, daß Delphi den Zähler bei der Funktions-Rückgabe erhöht, aber nicht merkt, daß der Rückgabewert nicht ausgewertet wird und den Zähler nie wieder erniedrigt. Scheint ein Bug zu sein, weiß jemand darüber mehr ?
Gruß Ralf
Eine COM-Klasse X beinhaltet ein Property Y zu einer anderen COM-Klasse, die die Methode Z implementiert.
Wird jetzt x.y.z aufgerufen, so wird der Referenzzähler von y automatisch hochgezählt, aber nicht mehr dekrementiert.
Wird jedoch x.y in einer Variablen zwischengeparkt, anschließend davon die Methode z aufgerufen und dann der temporären Variablen Nil zugewiesen, so ist der Referenzzähler von y am Ende wieder korrekt.
Somit liegt der Schluß nahe, daß Delphi den Zähler bei der Funktions-Rückgabe erhöht, aber nicht merkt, daß der Rückgabewert nicht ausgewertet wird und den Zähler nie wieder erniedrigt. Scheint ein Bug zu sein, weiß jemand darüber mehr ?
Gruß Ralf
Comment