现在的位置: 首页 > 综合 > 正文

一个COM内存泄露的例子

2013年08月14日 ⁄ 综合 ⁄ 共 330字 ⁄ 字号 评论关闭
 

一个COM内存泄露的例子。

VARIANT var;

VariantInit(&var);

var.vt=VT_BSTR;

var.bstrVal=::SysAllocString("2222"); /*这边内存将泄露*/

VariantClear(var);

必须使用

SysFreeString(var.bstrVal);

VariantClear(var);

对于这种泄露,VC IDE将无能为力,因为它只擅长NEW和Delete的匹配。

 还有一点建议,在能够使用ATL包装类或者C++包装类的时候 ,请尽量使用它们。让它们来管理你的BSTR和VARIANT变量的申请和释放。

因为在编写的过程,如果写的代码一多,很容易把变量的释放给忘了。对于这种情况,又是很难查找的问题的根源。

抱歉!评论已关闭.