c/c++语言开发共享xmlReaderForMemory在第二次调用时崩溃

在谷歌长时间使用之后,我仍无法找到xmlReaderForMemory崩溃的原因/解决方案,仍然使用有效参数。

我已经使用libxml创建了两个解析器函数,当我单独调用它们工作正常。但是当我一个接一个地调用它时,它会在xmlReaderForMemory上崩溃,给出错误s:

nayak.exe中0x7c918fea的第一次机会exception:0xC0000005:访问冲突写入位置0x00000010。 nayak.exe中0x7c918fea处的未处理exception:0xC0000005:访问冲突写入位置0x00000010。

现在我给出了两个函数的代码:

第一function:

char* CB_omniParser(char *omnistring){ char *parseResult,; const char *fileName = omnistring; char *temp,*texttemp,*result=0; int i,len=0,error; xmlTextReaderPtr reader; len= strlen(omnistring); if(len==0) return 0; reader = xmlReaderForMemory(fileName,len,"",NULL,0); if(reader){ temp = (char *) GlobalAlloc(GPTR, sizeof(char)*len); parseResult = (char *) GlobalAlloc(GPTR,sizeof(char)*len+1); while(error=xmlTextReaderRead(reader)) { if(error==-1){ return 0; // on failure } switch(xmlTextReaderNodeType(reader)) { case XML_READER_TYPE_ELEMENT: temp = (char *)xmlTextReaderConstName(reader); strcat(parseResult,temp); strcat(parseResult,"#"); xmlTextReaderMoveToElement(reader); continue; case XML_READER_TYPE_TEXT: temp = (char *)xmlTextReaderConstValue(reader); strcat(parseResult,temp); strcat(parseResult,"|"); continue; } } xmlFreeTextReader(reader); xmlCleanupParser(); return parseResult;//on success returns the parsed omni string } else return 0; // on failure } 

第二function:

  char* CB_xmlParserFromMemory(char *xmlstring){ char *xmlParseresult; char *temp; int i,len,,error;; xmlTextReaderPtr reader1; len= strlen(xmlstring); if(len==0) return 0; reader1 = xmlReaderForMemory(xmlstring,len,NULL,NULL,0); if(reader1){ temp = (char *) GlobalAlloc(GPTR, sizeof(char)*len); while(error=xmlTextReaderRead(reader1)) { if(error==-1){ return 0; // on failure } switch(xmlTextReaderNodeType(reader1)) { case XML_READER_TYPE_ELEMENT: temp = (char *)xmlTextReaderConstName(reader1); strcat(xmlParseresult,"""); strcat(xmlParseresult,temp); strcat(xmlParseresult,"""); strcat(xmlParseresult,":"); xmlTextReaderMoveToElement(reader1); continue; case XML_READER_TYPE_TEXT: temp = (char *)xmlTextReaderConstValue(reader1); strcat(xmlParseresult,"""); strcat(xmlParseresult,temp); strcat(xmlParseresult,"""); strcat(xmlParseresult,","); continue; } } xmlCleanupParser(); xmlFreeTextReader(reader1); GlobalFree(temp); return xmlParseresult;//on success returns the parsed omni string } else return 0; // on failure } 

两个函数都是单独工作正常。但是如果我一个接一个地调用一个函数,那么两个都在上面给出的位置崩溃… ith同样的错误..plz帮助我…..

    我觉得这对我来说是幸运的一天,因为我有机会回答我自己的问题……

    现在我感到高兴,因为它在任何问题上完全正常工作,问题在于记忆(不是那个,你在听了记忆问题后的想法)。

    由于声明,该问题正在提出:

      xmlCleanupParser(); 

    因为我用而不是

      xmlInitParser (); 

    但现在我不会说出原因,因为你们也应该做一些工作……

    我会给你一个帮助我摆脱这个的URL ….

      以上就是c/c++开发分享xmlReaderForMemory在第二次调用时崩溃相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/523129.html

      (0)
      上一篇 2020年12月11日
      下一篇 2020年12月11日

      精彩推荐