MFC CString作为函数返回值存在内存泄漏 求解决方法 100分
MFC CString作为函数返回值存在内存泄漏 求解决办法 100分
使用CString作为函数返回值 用Visual Leak Detector检查出有内存泄漏,代码如下:
在线等啊
------解决方案--------------------
HRESULT hr = m_pDevDoc.CreateInstance(__uuidof(MSXML2::DOMDocument)); //没释放吧
m_pDevDoc.Release();
------解决方案--------------------
使用CString作为函数返回值 用Visual Leak Detector检查出有内存泄漏,代码如下:
CString CParseXML::GetNodeDialogType(CString strNodeName)
{
CString strSelect;
CString strNodeDialogType;
MSXML2::IXMLDOMNodePtr pItem;
MSXML2::IXMLDOMNodePtr pAttrItem;
MSXML2::IXMLDOMNamedNodeMapPtr pAttrs = NULL;
m_strDevicePathName = CM_DEV_DES_FILE_FOLDER + CGlobeContent::cmStrDevName + CM_FILE_EXTENSION; //DialogType
CoInitialize(NULL);
HRESULT hr = m_pDevDoc.CreateInstance(__uuidof(MSXML2::DOMDocument));
if(!SUCCEEDED(hr))
{
AfxMessageBox(CREATE_DOMDOCUMENT_ERROR);
}
m_pDevDoc->load((_bstr_t)m_strDevicePathName);
strSelect = CM_XML_ATTR_START + strNodeName + CM_XML_ATTR_END;
pItem = m_pDevDoc->selectSingleNode((_bstr_t)strSelect);
pItem->get_attributes(&pAttrs);
pAttrs->get_item(XML_ATTR_DIALOG_TYPE,&pAttrItem);
strNodeDialogType = (LPCTSTR)(_bstr_t)pAttrItem->nodeTypedValue;
pItem.Release();
pAttrItem.Release();
pAttrs.Release();
CoUninitialize();
return strNodeDialogType;
}
如下调用:
CString strTest;
strTest = GetNodeDialogType(strNodeName);
在线等啊
------解决方案--------------------
HRESULT hr = m_pDevDoc.CreateInstance(__uuidof(MSXML2::DOMDocument)); //没释放吧
m_pDevDoc.Release();
------解决方案--------------------