Dot-Net
在 Delphi 中銷毀 COM 對象
有一些.net 程序集,通過COM 在delphi 中呼叫它。
var intf: ITest; ... intf:= CreateComObject(CLASS_TEST) as ITest; ... //here comes some stuff ...我必須做些什麼來破壞它以釋放記憶體。或不?
你應該更好地釋放記憶體
intf := nil;當你不再需要它時。如果定義為,則最好使用
try...finally intf := nil;塊,或者在Destroy覆蓋的方法中,即作為類屬性。intf``fIntf如果
intf在堆棧上定義,我們將在方法結束時自動釋放。try...finally intf := nil; end編譯器生成了一個隱藏塊來釋放intf實例。
COM 對像是引用計數的,當引用計數為零時,它們會自動銷毀。每當您的程式碼添加對對象的引用或刪除它時,編譯器都會自動添加對對象的呼叫
_AddRef和介面方法。_Release將引用 COM 對象的變數設置為nil將呼叫_Release(減少引用計數),並且如果引用計數達到零,則該對像也被釋放(如果引用計數不為零,則不會釋放)。當變數超出範圍時(即局部變數,當過程退出時),_Release如果變數引用 COM 對象(或任何引用計數的 Delphi 介面),編譯器也會呼叫。