gpt4 book ai didi

C++,libxslt : Freeing the stylesheet document after freeing the style sheet results in crash

转载 作者:行者123 更新时间:2023-11-28 03:31:43 27 4
gpt4 key购买 nike

我将 libxml2 与 libxslt 一起用于 C++ 程序的 XML 处理。为了使用 XSL 转换 XML 文档,我使用了以下函数(删除了错误处理):

xmlDocPtr
transformXmlDocument(
const xmlDocPtr inputDocument,
const std::string& stylesheetString
) {

exsltRegisterAll();

// Read the stylesheet document.
xmlDocPtr stylesheetDocument = xmlReadMemory(
stylesheetString.c_str(),
stylesheetString.length(),
"stylesheet.xsd",
0, // No encoding set - get it from the file header.
0 // No further options.
);

// Parse the stylesheet
xsltStylesheetPtr stylesheet = xsltParseStylesheetDoc(stylesheetDocument);

// Transform the document
xmlDocPtr result = xsltApplyStylesheet(stylesheet, inputDocument, 0);

// Free used resources
xsltFreeStylesheet(stylesheet);
xsltCleanupGlobals();

// Here the program crashes
xmlFreeDoc(stylesheetDocument);

return result;
}

问题是程序因访问冲突而崩溃(glibc 说:free(): 无效指针:0x00000000026d8090 *)在倒数第二行。

我在文档中找不到任何关于 xsltFreeStylesheet 也释放底层文档或其他东西的提示,那么这里有什么问题吗?

最佳答案

xsltFreeStylesheet also frees the underlying document or something

The fine manual有一些暗示表明这种情况确实有可能发生。

关于C++,libxslt : Freeing the stylesheet document after freeing the style sheet results in crash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12342128/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com