我正在存储从以下tinyxml2函数返回的const char *:
const char* tinyxml2::XMLElement::Attribute (const char * name, const char * value = 0)
但是,我最近意识到字符串数据随着时间的推移会被破坏,可能在多次调用Attribute()之后。我要将const char *更改为std :: string,但我只是想了解为什么会发生这种情况。
我试过查看源代码,但我不明白为什么会这样。看起来像Attribute()调用Value()调用GetStr():
https://github.com/leethomason/tinyxml2/blob/master/tinyxml2.cpp
有人能告诉我为什么GetStr()返回的const char *所指向的数据会被破坏吗?
答案 0 :(得分:1)
查看源代码会发现它返回一个指向XML数据的指针。 确保将XML数据保留在内存中,直到处理完毕,或者在删除XML数据之前复制所需的字符串。