作者Cosmology (宇宙學型男)
看板C_and_CPP
標題[問題] directed graph memory leak (用Xcode)
時間Tue May 5 18:04:12 2015
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Mac OSX
Xcode
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
No
問題(Question):
自己做 directed graph 這個東西
自己看書摸索學
用Linked List來呈現
基本上就是增加某兩點之間的路徑(有方向)
或是刪除路徑
或刪除跟增加點
程式跑的時候沒什麼大問題
但是我通常會給極限測試... 就是把條件設成無限while讓他重複
去看到底會不會有記憶體的問題
之前自我感覺良好感覺沒什麼問題
但是用Xcode的工具去測試的時候一直在我增加路徑這個Function中會有memory leak...
導致memory使用率一直增加
搞了整天一直不知道問題出現在哪邊
程式碼:
http://ideone.com/kjCTSa
x是我的起點, y是終點
List[x]只是眾多起點其中x這個起點
我只貼增加路徑那個部分(順序目前無視)
(其他的地方跑起來沒問題的樣子)
其中:
current_node->next = new_node 這行如果註解掉的話就沒有memory的問題
但是我覺得這行應該是沒問題啊...
如果現在這個node的下一個是空的
而且現在的node也不等於我們要增加的(怕重複)
現在這個node就連到新的node
檢測圖:
http://i.imgur.com/QnmBf8r.png
http://imgur.com/QnmBf8r,pLSvJTD#1
跪求高手幫我解釋一下到底我哪邊有問題?(還是我腦袋有問題Q_Q)
我願意奉獻部分P幣求解答
拜託各位高手了...
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.109.234.170
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1430820255.A.423.html
※ 編輯: Cosmology (140.109.234.170), 05/05/2015 18:06:27
→ Feis: new_node = NULL; delete new_node; 超乎我的理解 05/05 18:37
→ Feis: current_node = List[x]; 也不知道在幹嘛. 無法閱讀 Orz 05/05 18:38
→ Feis: current_node 為什麼需要 new. 然後你在 delete 甚麼 ? 05/05 18:39
→ Feis: 然後邊界條件看起來也是錯的. 05/05 18:41
→ Feis: 你 new 了沒被指不就悲劇了. 建議你找個 linked list 實作看 05/05 18:42
→ Feis: 一下. 05/05 18:43
→ Feis: code 裡面所有 new 跟 delete 的都有問題 XD 05/05 18:44