2016-08-25 69 views
0

代碼在C#尋找潛在的泄漏

string GetValue() 
{ 
    //m_IFC is RCW of a native COM object returns Variant marshalled as managed object  
    object value1 = m_IFC.GetValue(); 
    string valueStr = (string) value1;  
    return valueStr; 
} 

具有上述代碼的組件,COM託管外的PROC返回從API向所有客戶端所接收到的字符串的服務器。 這裏有沒有任何潛在的內存泄漏?

回答

0

如果m_IFC確實是一個標準的運行時可調用封裝器,那麼從顯示的代碼中不存在潛在的內存泄漏。從MSDN documetation

標準包裝強制執行內置編組規則。例如,當.NET客戶端將String類型作爲參數的一部分傳遞給非託管對象時,該包裝器將該字符串轉換爲BSTR類型。如果COM對象將BSTR返回給其託管調用方,則調用方會收到一個字符串。客戶端和服務器都發送和接收他們熟悉的數據。

代碼中顯示的所有對象都是託管類型,當所有對它的引用超出範圍時都將被垃圾收集。任何非託管內存已由包裝處理。