我以一种非常糟糕的方式使用 rapidXML 获取配置文件的值。
xml_document<> doc;
doc.parse<parse_full>(buffer);
int a = atoi(doc.first_node("master")->first_node("profile")->first_node("width")->value());
如果节点不存在“first_node”返回0,那么“->value()”会崩溃。返回一个新的 xml_node 将修复崩溃,但是内存泄漏呢?
这是 rapidXML 与新旧返回的功能:
xml_node<Ch> *first_node(const Ch *name = 0, std::size_t name_size = 0, bool case_sensitive = true) const
{
if (name)
{
if (name_size == 0)
name_size = internal::measure(name);
for (xml_node<Ch> *child = m_first_node; child; child = child->next_sibling())
if (internal::compare(child->name(), child->name_size(), name, name_size, case_sensitive))
return child;
return new xml_node<Ch>(node_document);
//return 0;
}
else
return m_first_node;
}