首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

底下这段MSXML哪里引用计数不对了

2013-09-10 
下面这段MSXML哪里引用计数不对了?xml version1.0 encodingGB2312?Device id10041 name设备

下面这段MSXML哪里引用计数不对了


<?xml version="1.0" encoding="GB2312"?>
<Device id="10041" name="设备1">
<Type>13</Type>
<TypeName>保护</TypeName>
</Device>


CoInitialize(NULL);

CComPtr<IXMLDOMDocument> spXMLDOM = NULL;

HRESULT hr = spXMLDOM.CoCreateInstance(__uuidof(DOMDocument));
VARIANT_BOOL bSuccess = FALSE;

hr = spXMLDOM->load(CComVariant(L"xmlfile.xml") , &bSuccess);

CComPtr<IXMLDOMNode> spDevice = NULL;
CComBSTR bstrSS(L"Device");
hr = spXMLDOM->selectSingleNode(bstrSS , &spDevice);

CComQIPtr<IXMLDOMElement> spDev;
spDev = spDevice;

hr = spDev->setAttribute(CComBSTR(L"name") , CComVariant(L"测试设备"));
hr = spDev->setAttribute(CComBSTR(L"has_product") , CComVariant(true));

CComPtr<IXMLDOMNode> spModelNode = NULL;

hr = spXMLDOM->createNode(CComVariant(NODE_ELEMENT),CComBSTR(L"Model"),NULL,
&spModelNode);

CComPtr<IXMLDOMNode> spInsertedNode = NULL;
hr = spDevice->appendChild(spModelNode , &spInsertedNode);

CString strID(L"3");

hr = spInsertedNode->put_text(strID.AllocSysString());

hr = spXMLDOM->save(CComVariant(L"myxmlfile.xml"));

CoUninitialize();


哪儿计数不对了??函数运行结束的时候崩溃了
[解决办法]
在CoUninitialize()前面加上以下语句可避免运行结束时崩溃:

spXMLDOM.Release();
spDevice.Release();
spDev.Release();
spModelNode.Release();
spInsertedNode.Release();

热点排行