寻找潜在的泄漏

时间:2016-08-25 08:41:57

标签: memory-leaks

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 out-of-proc服务器中,该服务器将从API接收的字符串返回给所有客户端。 这里有任何潜在的内存泄漏吗?

1 个答案:

答案 0 :(得分:0)

如果m_IFC确实是标准的运行时可调用包装,那么从您显示的代码中就没有潜在的内存泄漏。来自MSDN documetation

  

标准包装器强制执行内置编组规则。例如,当.NET客户端将String类型作为参数的一部分传递给非托管对象时,包装器会将字符串转换为BSTR类型。如果COM对象将BSTR返回给其托管调用者,则调用者将收到一个String。客户端和服务器都发送和接收他们熟悉的数据。

代码中显示的所有对象都是托管类型,当对它的所有引用都超出范围时,将对其进行垃圾回收。任何非托管内存都已由包装器处理。