我正在存储从以下tinyxml2函数返回的const char*:
const char* tinyxml2::XMLElement::Attribute (const char * name, const char * value = 0)
http://www.grinninglizard.com/tinyxml2docs/classtinyxml2_1_1_x_m_l_element.html ae39be2f7677e470e0f76ccd73eea560c
然而,我最近意识到字符串数据会随着时间的推移而损坏,可能是在多次调用Attribute()之后。我要把const char*改成std::string,但我只是想知道为什么会这样。
我试着看源代码,但我不明白为什么会发生这种情况。它看起来像Attribute()调用Value(), Value()调用GetStr():
https://github.com/leethomason/tinyxml2/blob/master/tinyxml2.cpp谁能告诉我为什么由GetStr()返回的const char*指向的数据会损坏?
查看源代码可以发现,它返回一个指向XML数据的指针。确保在完成处理之前将XML数据保存在内存中,或者在删除XML数据之前复制所需的字符串。