我以前成功使用xmlTextReaderGetAttribute
(从xmlsoft.org),但API文档要求我释放返回的xmlChar*
。现在,在第二(第一传递空)我的应用程序崩溃来电free()
,如下图所示:xmlTextReaderGetAttribute()后释放xmlChar指针
xmlTextReaderPtr reader = null;
xmlChar *attribVal = null;
//blah...
if (xmlTextReaderAttributeCount(reader) > 0) {
free((attribVal));
attribVal = xmlTextReaderGetAttribute(reader, (const xmlChar*)"super-Attrib");
if (xmlStrcasecmp(attribVal, (const xmlChar*)"monoMega-Attrib") == 0) {
free((attribVal));
我的项目是在C++中,但libxml2和从xmlsoft.org使用标准C.
这不是你的问题,但你为什么用两套parens编写'free(())'? 什么是你的项目崩溃(段错误?),你可以把打印之前和之后的第二个免费只是为了确保它崩溃吗? – Dan
@丹,我正在通过它与gdb,它正在崩溃在那里。 doube parens(())将施加“const”或“void *”。我有他们在一个函数,直到我发现它崩溃。 – John