Sockets XML解析库在Mac应用程序上崩溃,而在iOS上工作正常
我的项目中有一个关于xml解析的问题。我尝试了两个xml解析器库xmlParser和TinyXML,它们在相同的代码点出现了相同的错误。起初我认为这是xmlParser的一个bug,但在TinyXML上发现同样的错误后,我认为这一定是我代码的某个方面,或者我的理解。我不知道如何解决这个问题。让我详细谈谈 下面是我使用xmlParser截取的代码Sockets XML解析库在Mac应用程序上崩溃,而在iOS上工作正常,sockets,crash,cross-platform,xml-parsing,tinyxml,Sockets,Crash,Cross Platform,Xml Parsing,Tinyxml,我的项目中有一个关于xml解析的问题。我尝试了两个xml解析器库xmlParser和TinyXML,它们在相同的代码点出现了相同的错误。起初我认为这是xmlParser的一个bug,但在TinyXML上发现同样的错误后,我认为这一定是我代码的某个方面,或者我的理解。我不知道如何解决这个问题。让我详细谈谈 下面是我使用xmlParser截取的代码 XMLResults xe; printf("%s\n", xmlData); //<XML SUC='1'></XML> p
XMLResults xe;
printf("%s\n", xmlData); //<XML SUC='1'></XML>
printf("Before parsing XML\n");
XMLNode xMainNode = XMLNode::parseString(xmlData, "XML", &xe);
printf("After parsing XML\n");
if(xe.error!=eXMLErrorNoXMLTagFound) {
bool suc = (bool)atoi(xMainNode.getAttribute("SUC"));
}else {
printf("non-xml data\n");
}
这是从“recvfrom”套接字接收的,我不知道,但它打印正确。
上面截取的代码是信号函数,假设它只在套接字接收xmlData时执行
它不是在第一个信号或第一次执行时崩溃,而是在那之后最终崩溃,需要3秒-10分钟
正如标题所示,这段代码在iOS上运行良好,但在Mac上会崩溃。我需要释放或发布一些东西吗?错误不是来自那些库,但我认为是关于我使用的信号处理功能。在我改为选择而不是信号处理功能后,它现在可以正常工作了。
TiXmlDocument xmlDoc;
printf("%s\n", xmlData); //<XML SUC='1'></XML>
printf("Before parsing XML\n");
xmlDoc.Parse(xmlData, 0, TIXML_DEFAULT_ENCODING);
TiXmlElement *xMainElem = xmlDoc.RootElement();
printf("After parsing XML\n");
<XML SUC='1'></XML>
Before parsing XML
//and then crash
char xmlData[4096];