TinyXML中奇怪的user breakpoint错误?

TinyXML中奇怪的user breakpoint错误?

代码中使用了TinyXML库,在使用过程中发现一个奇怪的问题,这个问题简化描述如下:
1、编写一个lib,接口为:
void  BuildXMLFile(TiXmlDocument &  doc)
{
    TiXmlPrinter printer;
    printer.SetIndent( 
""  );
    doc.Accept( 
& printer );
}

2、编写一个win32控制台程序,调用这个接口:

int  main()
{
    TiXmlDocument doc;
    doc.Parse( 
" <?xml version=\ " 1.0 \ "  encoding=\ " gb2312\ "  ?> < xml > aaa </ xml > "  );
    BuildXMLFile(doc);
    return   0 ;
}
现象:执行到BuildXMLFile(doc)时,doc.Accept( & printer)出错,弹出user breakpoint called.....错误。
TinyXML中奇怪的user breakpoint错误?_第1张图片

这个xml绝对没有错误(有可能贴出格式不对,因此在这缩写了),而且我如此调用并不出错(或BuildXMLFile调用后打印也不出错),只有在BuildXMLfile()内部才弹出那个对话框。

int  main()
{
    TiXmlDocument doc;
    doc.Parse( 
" <?xml version=\ " 1.0 \ "  encoding=\ " gb2312\ "  ?><xml>aaa</xml> "  );
    TiXmlPrinter printer;
    printer.SetIndent( 
""  );
    doc.Accept( 
& printer );
    
// BuildXMLFile(doc);
     return   0 ;
}

一开始我很纳闷:
首先,我并未对doc进行任何操作,只是一个doc.Accept()的操作,为什么在接口外调用就可以,在接口内部调用却不可以呢?而且,我在接口内部生成的doc,accpet操作也并不出错,真的很奇怪的一个问题,跟踪调试发现:


从堆栈中,我感觉发现了点问题,但是还不能确定是不是这个原因导致。因此发上来问问大家有没有碰过这个问题,改如何解释?

你可能感兴趣的:(TinyXML中奇怪的user breakpoint错误?)