我正在使用MSXML 4.0來解析我的xml。msxml程序的最後一行出錯
程序工作正常,但在程序結束之前,我得到以下異常
未處理的異常在0x00417be5在 db2.exe:0000005:訪問衝突 閱讀位置0x00b1c740。
在comip.h
在_Release()
方法在行m_pInterface->Release();
這裏是我的代碼
#include <iostream>
#include "stdafx.h"
#include "Database.h"
#include <sstream>
#include <objbase.h>
#import <msxml4.dll>
using namespace std;
void main(int argc, _TCHAR* argv[])
{
::CoInitialize(NULL);
MSXML2::IXMLDOMDocumentPtr pXMLDom;
HRESULT hr= pXMLDom.CreateInstance(__uuidof(MSXML2::DOMDocument40), NULL, CLSCTX_INPROC_SERVER); //Msxml2.DOMDocument.4.0
if (FAILED(hr))
{
printf("Failed to instantiate an XML DOM.\n");
//return 0;
}
try
{
pXMLDom->async = VARIANT_FALSE;
pXMLDom->validateOnParse = VARIANT_FALSE;
pXMLDom->resolveExternals = VARIANT_FALSE;
if(pXMLDom->load("users.xml") == VARIANT_TRUE)
{
printf("XML DOM loaded from users.xml:\n%s\n", (LPCSTR)pXMLDom->xml);
}
else
{
// Failed to load xml
printf("Failed to load DOM from stocks.xml. %s\n",
(LPCSTR)pXMLDom->parseError->Getreason());
}
::CoUninitialize();
}
catch(_com_error errorObject)
{
printf("Exception thrown, HRESULT: 0x%08x", errorObject.Error());
}
catch(...)
{
printf("Unknown error");
}
}
我不知道什麼是錯我的程序。它只是在最後一行之前拋出一個異常。
有人可以指出我正確的方向嗎?
編輯:奇怪,我從我的程序中刪除::CoUninitialize();
,它工作正常。
::CoUninitialize();
方法有什麼問題?
感謝,
這是最可能是內存錯誤。調試它,你應該看到它。 **爲什麼你不通過引用捕獲異常而不是複製?** – DumbCoder
@DumbCoder我是新來的C++,所以我不知道如何通過引用捕獲異常,你能給我一個例子嗎? – Searock
@DumbCoder我已更新我的問題。請看一看。 – Searock