IUnknown ** 指针的指针 释放问题

moongoose_rmxming moongoose_rmxming 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
各位朋友:

我初学写COM组件,有个程序需要用DLL来传递COM对象,传递对象的接口被定义为IUnknown ** 指向指针的指针。我写了如下代码,但Release COM对象却出现了错误。关键代码如下(其他代码我已经过滤):

int32 Read_Xml_File(char * XML_Path, LStrHandle Out_Put_File, IUnknown ** lvIUnknown)
{
CComPtr<MSXML::IXMLDOMDocument> spDoc;

HRESULT hr;
IUnknown * pIUnknown;

//一般的IUnknown 指针 pIUnknown
hr = spDoc->QueryInterface(IID_IXMLDOMDocument, (void**)&pIUnknown);

//指向IUnknown 对象的指针 lvIUnknown
hr = pIUnknown->QueryInterface(IID_IXMLDOMDocument,(void**)(&(*lvIUnknown)));

//pIUnknown Release没问题
pIUnknown->Release();

//这里释放就导致程序崩溃了
(*lvIUnknown)->Release();
}

我应该怎么做才能确保Release成功?
...全文

相关推荐

评论 34
收藏 已收藏
分享
返回顶部
moongoose_rmxming
C++ 语言 65,214 成员 250,514 内容