const char *成员

时间:2013-03-10 04:33:44

标签: c++ windows tinyxml

我正在存储从以下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 *所指向的数据会被破坏吗?

1 个答案:

答案 0 :(得分:1)

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