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() が GetStr() を呼び出す Value() を呼び出すように見えます。

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 に答える