分析完1万条数据之后内存会增加200m。该释放的都释放掉了,请大家帮忙看看。
#import <msxml4.dll> //raw_interfaces_only
using namespace MSXML2;
hr = pXmlDoc.CreateInstance(__uuidof(MSXML2::DOMDocument));
if (FAILED(hr))
{
AfxMessageBox("Faild to Create XMLDom Instance !");
pXmlDoc=NULL;
}
else
{
_bstr_t xmlstr=(LPCSTR)strResult;
VARIANT_BOOL bresult;
bresult = pXmlDoc->loadXML(xmlstr);
if (!bresult)
{
pXmlDoc->Release();
pXmlDoc=NULL;
}
else
{
long count = -1;
pXmlDoc->get_childNodes(&pXmlList);
if (pXmlList == NULL)
{
throw;
}
pXmlList->get_length(&count);
for(int i = 0; i < count ;i++)
{
pXmlList->raw_nextNode(&pXmlNode);
if(!pXmlNode)
break;
pXmlNode->raw_selectSingleNode(bProperty,&pXDNTemp);
if (pXDNTemp!= NULL)
{
pXDNTemp->get_text(&bStrText);
pXDNTemp->Release();
pXDNTemp = NULL;
}
if (bStrText != NULL)
{
strProperty= CString(bStrText);
SysFreeString(bStrText);
bStrText = NULL;
}
pXmlNode->raw_selectSingleNode(bSerialID,&pXDNTemp);
if (pXDNTemp!= NULL)
{
pXDNTemp->get_text(&bStrText);
pXDNTemp->Release();
pXDNTemp = NULL;
}
if (bStrText != NULL)
{
strSerialID= CString(bStrText);
SysFreeString(bStrText);
bStrText = NULL;
if (pView == NULL)
{
break;
}
}
pXmlNode->raw_selectSingleNode(bEquipeName,&pXDNTemp);
if (pXDNTemp!= NULL)
{
pXDNTemp->get_text(&bStrText);
pXDNTemp->Release();
pXDNTemp = NULL;
}
if (bStrText != NULL)
{
strEquipeName = CString(bStrText);
SysFreeString(bStrText);
bStrText = NULL;
}
pXmlNode->raw_selectSingleNode(bMsgData,&pXDNTMsgData);
if (pXDNTMsgData!= NULL)
{
pXDNTMsgData->raw_selectSingleNode(bCheckState,&pXDNTemp);
if (pXDNTemp!= NULL)
{
pXDNTemp->get_text(&bStrText);
pXDNTemp->Release();
pXDNTemp = NULL;
}
if (bStrText != NULL)
{
strCheckState= CString(bStrText);
SysFreeString(bStrText);
bStrText = NULL;
}
pXDNTMsgData->raw_selectSingleNode(bResultInfo,&pXDNTemp);
if (pXDNTemp!= NULL)
{
pXDNTemp->get_attributes(&pXmlNamedNodeMap);
if (pXmlNamedNodeMap!= NULL)
{
pXmlNamedNodeMap->getNamedItem("result_type")->get_text(&bStrText);
if (bStrText != NULL)
{
strIResultType= CString(bStrText);
SysFreeString(bStrText);
bStrText = NULL;
}
pXmlNamedNodeMap->Release();
pXmlNamedNodeMap = NULL;
}
pXDNTemp->get_text(&bStrText);
pXDNTemp->Release();
pXDNTemp = NULL;
}
if (bStrText != NULL)
{
strResultInfo= CString(bStrText);
SysFreeString(bStrText);
bStrText = NULL;
}
pXDNTMsgData->raw_selectSingleNode(bCheckedCount,&pXDNTemp);
if (pXDNTemp!= NULL)
{
pXDNTemp->get_text(&bStrText);
pXDNTemp->Release();
pXDNTemp = NULL;
}
if (bStrText!= NULL)
{
strCheckedCount = CString(bStrText);
SysFreeString(bStrText);
bStrText = NULL;
}
pXDNTMsgData->Release();
pXDNTMsgData = NULL;
}
}
#import <msxml4.dll> //raw_interfaces_only
using namespace MSXML2;
hr = pXmlDoc.CreateInstance(__uuidof(MSXML2::DOMDocument));
if (FAILED(hr))
{
AfxMessageBox("Faild to Create XMLDom Instance !");
pXmlDoc=NULL;
}
else
{
_bstr_t xmlstr=(LPCSTR)strResult;
VARIANT_BOOL bresult;
bresult = pXmlDoc->loadXML(xmlstr);
if (!bresult)
{
pXmlDoc->Release();
pXmlDoc=NULL;
}
else
{
long count = -1;
pXmlDoc->get_childNodes(&pXmlList);
if (pXmlList == NULL)
{
throw;
}
pXmlList->get_length(&count);
for(int i = 0; i < count ;i++)
{
pXmlList->raw_nextNode(&pXmlNode);
if(!pXmlNode)
break;
pXmlNode->raw_selectSingleNode(bProperty,&pXDNTemp);
if (pXDNTemp!= NULL)
{
pXDNTemp->get_text(&bStrText);
pXDNTemp->Release();
pXDNTemp = NULL;
}
if (bStrText != NULL)
{
strProperty= CString(bStrText);
SysFreeString(bStrText);
bStrText = NULL;
}
pXmlNode->raw_selectSingleNode(bSerialID,&pXDNTemp);
if (pXDNTemp!= NULL)
{
pXDNTemp->get_text(&bStrText);
pXDNTemp->Release();
pXDNTemp = NULL;
}
if (bStrText != NULL)
{
strSerialID= CString(bStrText);
SysFreeString(bStrText);
bStrText = NULL;
if (pView == NULL)
{
break;
}
}
pXmlNode->raw_selectSingleNode(bEquipeName,&pXDNTemp);
if (pXDNTemp!= NULL)
{
pXDNTemp->get_text(&bStrText);
pXDNTemp->Release();
pXDNTemp = NULL;
}
if (bStrText != NULL)
{
strEquipeName = CString(bStrText);
SysFreeString(bStrText);
bStrText = NULL;
}
pXmlNode->raw_selectSingleNode(bMsgData,&pXDNTMsgData);
if (pXDNTMsgData!= NULL)
{
pXDNTMsgData->raw_selectSingleNode(bCheckState,&pXDNTemp);
if (pXDNTemp!= NULL)
{
pXDNTemp->get_text(&bStrText);
pXDNTemp->Release();
pXDNTemp = NULL;
}
if (bStrText != NULL)
{
strCheckState= CString(bStrText);
SysFreeString(bStrText);
bStrText = NULL;
}
pXDNTMsgData->raw_selectSingleNode(bResultInfo,&pXDNTemp);
if (pXDNTemp!= NULL)
{
pXDNTemp->get_attributes(&pXmlNamedNodeMap);
if (pXmlNamedNodeMap!= NULL)
{
pXmlNamedNodeMap->getNamedItem("result_type")->get_text(&bStrText);
if (bStrText != NULL)
{
strIResultType= CString(bStrText);
SysFreeString(bStrText);
bStrText = NULL;
}
pXmlNamedNodeMap->Release();
pXmlNamedNodeMap = NULL;
}
pXDNTemp->get_text(&bStrText);
pXDNTemp->Release();
pXDNTemp = NULL;
}
if (bStrText != NULL)
{
strResultInfo= CString(bStrText);
SysFreeString(bStrText);
bStrText = NULL;
}
pXDNTMsgData->raw_selectSingleNode(bCheckedCount,&pXDNTemp);
if (pXDNTemp!= NULL)
{
pXDNTemp->get_text(&bStrText);
pXDNTemp->Release();
pXDNTemp = NULL;
}
if (bStrText!= NULL)
{
strCheckedCount = CString(bStrText);
SysFreeString(bStrText);
bStrText = NULL;
}
pXDNTMsgData->Release();
pXDNTMsgData = NULL;
}
}
using namespace MSXML2;
hr = pXmlDoc.CreateInstance(__uuidof(MSXML2::DOMDocument));
if (FAILED(hr))
{
AfxMessageBox("Faild to Create XMLDom Instance !");
pXmlDoc=NULL;
}
else
{ _bstr_t xmlstr=(LPCSTR)strResult;
VARIANT_BOOL bresult;
bresult = pXmlDoc->loadXML(xmlstr);
if (!bresult)
{
pXmlDoc->Release();
pXmlDoc=NULL;
}
else
{
long count = -1;
pXmlDoc->get_childNodes(&pXmlList);
if (pXmlList == NULL)
{
throw;
}
pXmlList->get_length(&count);
for(int i = 0; i < count ;i++)
{
pXmlList->raw_nextNode(&pXmlNode);
if(!pXmlNode)
break; pXmlNode->raw_selectSingleNode(bProperty,&pXDNTemp);
if (pXDNTemp!= NULL)
{
pXDNTemp->get_text(&bStrText);
pXDNTemp->Release();
pXDNTemp = NULL;
}
if (bStrText != NULL)
{
strProperty= CString(bStrText);
SysFreeString(bStrText);
bStrText = NULL;
}
pXmlNode->raw_selectSingleNode(bSerialID,&pXDNTemp);
if (pXDNTemp!= NULL)
{
pXDNTemp->get_text(&bStrText);
pXDNTemp->Release();
pXDNTemp = NULL;
}
if (bStrText != NULL)
{
strSerialID= CString(bStrText);
SysFreeString(bStrText);
bStrText = NULL;
if (pView == NULL)
{
break;
}
}
pXmlNode->raw_selectSingleNode(bEquipeName,&pXDNTemp);
if (pXDNTemp!= NULL)
{
pXDNTemp->get_text(&bStrText);
pXDNTemp->Release();
pXDNTemp = NULL;
}
if (bStrText != NULL)
{
strEquipeName = CString(bStrText);
SysFreeString(bStrText);
bStrText = NULL;
}
pXmlNode->raw_selectSingleNode(bMsgData,&pXDNTMsgData);
if (pXDNTMsgData!= NULL)
{
pXDNTMsgData->raw_selectSingleNode(bCheckState,&pXDNTemp);
if (pXDNTemp!= NULL)
{
pXDNTemp->get_text(&bStrText);
pXDNTemp->Release();
pXDNTemp = NULL;
}
if (bStrText != NULL)
{
strCheckState= CString(bStrText);
SysFreeString(bStrText);
bStrText = NULL;
}
pXDNTMsgData->raw_selectSingleNode(bResultInfo,&pXDNTemp);
if (pXDNTemp!= NULL)
{
pXDNTemp->get_attributes(&pXmlNamedNodeMap);
if (pXmlNamedNodeMap!= NULL)
{
pXmlNamedNodeMap->getNamedItem("result_type")->get_text(&bStrText);
if (bStrText != NULL)
{
strIResultType= CString(bStrText);
SysFreeString(bStrText);
bStrText = NULL;
}
pXmlNamedNodeMap->Release();
pXmlNamedNodeMap = NULL;
}
pXDNTemp->get_text(&bStrText);
pXDNTemp->Release();
pXDNTemp = NULL;
}
if (bStrText != NULL)
{
strResultInfo= CString(bStrText);
SysFreeString(bStrText);
bStrText = NULL;
}
pXDNTMsgData->raw_selectSingleNode(bCheckedCount,&pXDNTemp);
if (pXDNTemp!= NULL)
{
pXDNTemp->get_text(&bStrText);
pXDNTemp->Release();
pXDNTemp = NULL;
}
if (bStrText!= NULL)
{
strCheckedCount = CString(bStrText);
SysFreeString(bStrText);
bStrText = NULL;
}
pXDNTMsgData->Release();
pXDNTMsgData = NULL;
}
}