一个COM内存泄露的例子

一个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变量的申请和释放。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值