XML解析的内存泄漏问题 DOM解析XML首先在内存中重建XML树,然后添加、代替、遍历均在内存中进行,所以内存不会释放!用SAX解析占内存少,适合解析大的XML文件!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 注意这个宏的使用: A2BSTR(...) 它可能导致内存泄露. 应该这个函数释放SysFreeString(...) CoInitialize和CoUninitialize的位置有点问题吧偶通常是放在App的InitInstance和ExitInstance里面的我的代码和你的差不多 MSXML2::IXMLDOMDocument2Ptr pXMLDocument2("Msxml2.DOMDocument.4.0"); CString strTemp; GetWindowText(strTemp); _bstr_t bstrXml((LPCTSTR)strTemp); try{ pXMLDocument2->async=VARIANT_FALSE; VARIANT_BOOL varOkay = pXMLDocument2->loadXML(bstrXml); if (varOkay){ g_pMainFrame->m_wndDocumentOutline.loadXML(pXMLDocument2.GetInterfacePtr(),FALSE); } else { CGlobal::g_PrintXMLDOMParseError(pXMLDocument2->parseError); return ; } } catch(_com_error &e){ CGlobal::g_PrintComError(e); return ; }没有泄漏阿 代码基本上没有问题,但是CoUninitilize()位置确实有问题,HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML::DOMDocument));if (SUCCEEDED(hr))...CoUninitilize()和pDoc的成功实例化与否无关,只是初始化com库,一般放在最后 好像是CoInitialize和CoUninitialize的位置的问题我把它放出去后,再运行后,基本上内存不涨了,但是在我重复运行该段代码的前三次中内存还是会涨4K左右,以后就不会涨了。还有就是我如何将LoadXML中暴涨上去的内存释放出来。 MFC Winsocket编程 局域网远程控制问题 关于客户区绘图存储的问题。 服务器端和客户端都在不同的内网,可以建立数据传输吗? 怎样退出程序? UDP,双网卡,组播发送问题?(应该简单) 学 C++ 的 UML ,看什么书好?请大家帮我推荐。 急~~~~~~~~~~~~请问我是先学《C++》 , 还是先学《离散数学》~~~~~~~~~(在线等) 图像模式问题 创建的fileDialog中的文字怎么改变? MDI模式中,如何开启多个试图? 请教 我想在程序中弹出Windows的记事本并打开一个文本,如何实现
偶通常是放在App的InitInstance和ExitInstance里面的
我的代码和你的差不多
MSXML2::IXMLDOMDocument2Ptr pXMLDocument2("Msxml2.DOMDocument.4.0");
CString strTemp;
GetWindowText(strTemp);
_bstr_t bstrXml((LPCTSTR)strTemp);
try{
pXMLDocument2->async=VARIANT_FALSE;
VARIANT_BOOL varOkay = pXMLDocument2->loadXML(bstrXml);
if (varOkay){
g_pMainFrame->m_wndDocumentOutline.loadXML(pXMLDocument2.GetInterfacePtr(),FALSE);
}
else {
CGlobal::g_PrintXMLDOMParseError(pXMLDocument2->parseError);
return ;
}
}
catch(_com_error &e){
CGlobal::g_PrintComError(e);
return ;
}
没有泄漏阿
HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML::DOMDocument));if (SUCCEEDED(hr))
...CoUninitilize()和pDoc的成功实例化与否无关,只是初始化com库,一般放在最后