const char * member

Я храню const char *, возвращенный из следующей функции tinyxml2:

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

Может ли кто-нибудь сказать мне, почему данные, на которые указывает const char *, возвращаемая GetStr (), будут повреждены?

1

Решение

Взгляд на источник показывает, что он возвращает указатель на ваши данные XML.
Убедитесь, что вы храните данные XML в памяти до тех пор, пока не закончите их обработку, или скопируйте нужные строки перед удалением данных XML.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]