聲明:歡迎任何人和組織轉載本blog中文章,但必須標記文章原始鏈接和作者信息。
本文鏈接:http://blog.csdn.net/li_007/archive/2009/03/31/4038989.aspx
開拓進取的小烏龜------->CSDN點滴點點滴滴Blog
前面簡單介紹了TinyXML,順便寫了一個簡單的例子來測試利用TinyXML生成xml文件,其實代碼實現很簡單。如下:
運行後利用IE 8.0打開截圖如下:
好了,看後就知道很簡單的,這也是我選擇它的一個原因,但這裏做很簡單的測試,沒有對xml進行驗證代碼實現,但是TinyXML自己帶的test Application中有對xml進行驗證的函數,大家有興趣可以去看。
代碼很簡單不囉嗦,說點別的,仔細看看代碼,其中使用了很多new來建立了對象指針,但是隻看到一個delete,也許你會說着會引起內存泄漏,其實在上面的函數中,後面的delete也可以不要,並且還不會造成內存泄漏。原因看看TinyXML實現的源碼中TiXmlNode的析構函數的實現代碼如下:當然順便注意下所有的類的虛擬構造函數。
在結合一下前面文章介紹TinyXML的繼承圖表就清楚了爲什麼這兒不需要我們手動釋放堆棧了,特別是不需要一個一個地釋放,只需要最後釋放最高節點就可以,比如TiXmlDocument節點。。。。。。在我實現的函數中其實也可以不需要delete xmlDocs這句的,因爲他們都是局部變量,當變量的作用域結束的時候,會自動釋放。當然使用delete會觸發相應的class的析構函數的調用,這些都是C++的實現機制,在次不多說。
BTW:正是由於上面的原理,我們添加到TinyXML中的節點。。。都必須是動態用new來創建的。如果創建的不是指針,在內存釋放的時候會出現錯誤的,這個可以自己去測試。我想TinyXML這樣實現是因爲TInyXML實現機制的要求,因爲它是基於DOM,所有的節點都是在內存中。
<script src="http://s.vdoing.com/u/107/54977.js" type="text/javascript"></script>