我正在使用一个旧的MFC应用程序,它使用xerces 2.7进行XML解析。
在调试模式下,在尝试调试堆栈损坏时,我已经能够将问题范围缩小到以下代码:
BOOL CXMLHandler::LoadFile(CString fileName)
{
XMLPlatformUtils::Initialize();
SAXParser* parser = new SAXParser();
delete parser;
XMLPlatformUtils::Terminate();
return TRUE;
}
删除解析器时,我收到错误
“损坏:正常阻止后(#1695)在0x0795EEA8。”
SAXParser类来自xerces。
我无法弄清楚代码有什么问题。任何人都可以帮助找出这里有什么问题。代码中其他地方的内存泄漏/损坏是否会导致此问题?
答案 0 :(得分:1)
如果每次运行时#1695相同,请将以下内容添加到程序的开头:
_CrtSetBreakAlloc(1695);
分配编号1695是已损坏的数据。调试器将停在那里。