我之前成功使用了 xmlTextReaderGetAttribute
(来自 xmlsoft.org),但是 API 文档要求我取消分配返回的 xmlChar*
。现在我的应用程序在第二次(第一次通过 null)调用 free()
时崩溃,如下所示:
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。
直接使用xmlFree()
代替free()
:
xmlTextReaderPtr reader = null;
xmlChar *attribVal = null;
//blah...
if (xmlTextReaderAttributeCount(reader) > 0)
{
attribVal = xmlTextReaderGetAttribute(reader, BAD_CAST "super-Attrib");
if (attribVal)
{
...
xmlFree(attribVal);
}
}
我是一名优秀的程序员,十分优秀!