我正在存储从以下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
不过,我最近意识到,string数据会随着时间的推移而被破坏,可能在调用Attribute()多次之后。 我要改变const char *为一个std :: string,但我只想了解为什么发生这种情况。
我试图通过源代码,但我不明白为什么会发生这种情况。 它看起来像Attribute()调用Value()调用GetStr():
https://github.com/leethomason/tinyxml2/blob/master/tinyxml2.cpp
任何人都可以告诉我为什么由GetStr()返回的const char *所指向的数据将被损坏?
查看源代码可以发现它返回了一个指向你的XML数据的指针。 确保在处理完XML数据之前将XML数据保存在内存中,或者在删除XML数据之前复制所需的字符串。