下面的程序为什么会出现异常
#define DWORD_PTR DWORD*
#define HANDLE_PTR HANDLE*
#define ULONG_PTR ULONG*
#import "msxml4.dll"
#include <stdio.h>
#include <msxml2.h>
#include <comdef.h>
#include <string>
#include <comdef.h>
#include <iostream>
//using namespace MSXML2;
using namespace std;
#define COM_CHECK(hr) { if (S_FALSE == hr) throw; }
wchar_t *g_path = L"D:\\csdn.xml";
int main(int argc, char *argv[])
{
CoInitialize(0);
MSXML2::IXMLDOMDocument *pDoc = NULL;
MSXML2::IXMLDOMElement *pEle = NULL;
MSXML2::IXMLDOMElement *pNode = NULL;
MSXML2::IXMLDOMText *pText = NULL;
variant_t vLong((long)3), vStr(L"");
short bOk(-1);
HRESULT hr;
try
{
CoCreateInstance(CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER,
IID_IXMLDOMDocument, (void**)&pDoc);
pDoc->loadXML(g_path);
pEle = pDoc->createElement(_bstr_t("ok") ); // 此处ms c++ 异常
pDoc->appendChild(pEle); // 此处access 异常
for (int i = 0; i < 200; ++i) {
MSXML2::IXMLDOMElement *pItem;
MSXML2::IXMLDOMText *pText1;
pItem = pDoc->createElement(bstr_t("this"));
pItem->put_text(bstr_t("xxx"));
pEle->appendChild(pItem);
pText1 = pDoc->createTextNode(bstr_t("\n"));
pEle->appendChild(pText1);
pItem->Release();
pText1->Release();
}
MSXML2::IXMLDOMNode *pTemp;
VARIANT vNode;
vNode.iVal = NODE_ELEMENT;
vNode.vt = VT_I2;
pTemp = pDoc->createNode(vNode, _bstr_t("fuck you ms"), "");
pDoc->appendChild(pTemp);
pEle->Release();
COM_CHECK(pDoc->save(_variant_t(g_path)));
}
catch (...)
{
cout << "something wrong" << endl;
}
CoUninitialize();
return 0;
}