2013-03-10 96 views
1

我存儲一個const char *從以下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

然而,最近我意識到字符串數據變得隨着時間的推移,調用後可能損壞屬性()很多次。我將把const char *改爲std :: string,但我只想了解爲什麼會發生這種情況。

我試着翻看源代碼,但我不明白爲什麼會發生這種情況。它看起來像屬性()調用值(),它調用GetStr():

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

誰能告訴我爲什麼數據由爲const char *通過GetStr返回指向()會損壞?

+0

總推測:它將整個文件讀入一個緩衝區並解析它,返回一個char *到緩衝區。如果任何root tinyxml對象所擁有的緩衝區被銷燬,緩衝區也將被銷燬。你所看到的腐敗現象可能就是那些尚未完全寫下來的釋放內存。 – David 2013-03-10 04:40:17

回答

1

查看源代碼可以發現它返回了一個指向XML數據的指針。 確保您將XML數據保存在內存中,直到完成處理,或者在刪除XML數據之前複製所需的字符串。