1

我正在存储从以下 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(),而后者又调用了 GetStr():

https://github.com/leethomason/tinyxml2/blob/master/tinyxml2.cpp

谁能告诉我为什么 GetStr() 返回的 const char* 指向的数据会损坏?

4

1 回答 1

1

查看源代码会发现它返回一个指向您的 XML 数据的指针。确保在处理完 XML 数据之前将其保存在内存中,或者在删除 XML 数据之前复制所需的字符串。

于 2013-03-10T04:43:17.817 回答