下面这段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();