Re: [問題] 沒做什麼,值卻不一樣了

看板C_and_CPP (C/C++)作者 (Laleh)時間12年前 (2013/11/12 00:04), 編輯推噓1(106)
留言7則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《wk4xu4j (ha)》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) : 問題(Question): : 想寫DFS,但是卻卡在造圖這邊。 : 在初始的時候將node的key設為零,兩行都是print設的key值,第一行 : 印出0第二行key值卻跑掉了,讓我沒辦法將其他點接上去 : 餵入的資料(Input): : 1 : 1 2 : 預期的正確結果(Expected Output): : First 0 Second 0 ha ha2 : 錯誤結果(Wrong Output): : First 0 Second 2293700 ha4 : 程式碼(Code):(請善用置底文網頁, 記得排版) : http://codepad.org/03ppPPLG : 補充說明(Supplement): : 不知道哪裡出錯了,麻煩大家幫我看一下,謝謝。 tree_pointer InsertNode(int key); 這裡面需要用動態配置 (會占用heap的空間) 因為main funtiobn call InsertNode 後 stack 會往下多一個stack frame 如果沒用動態配置 當 InsertNode return 後 你 return 的指標 (head),指向的內容會被其他function call的stack frame 再利用,但是我是不確定指標指向的記憶體有沒有被釋放掉 (應該是沒有被釋放掉,否則head所指向的東西應該就不是struct node型別) (應該也無法印 head->key了) 而且我覺得有點怪的地方是 為什麼 first 與 second 印出來的執會不一樣就是了? 有請高手! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.45.173.131 ※ 編輯: Laleh 來自: 114.45.173.131 (11/12 00:07)

11/12 00:08, , 1F
不一樣是因為呼叫 printf 把它蓋掉了
11/12 00:08, 1F
※ 編輯: Laleh 來自: 114.45.173.131 (11/12 00:08)

11/12 00:09, , 2F
然後就語意上他是釋放掉了.
11/12 00:09, 2F

11/12 00:10, , 3F
我給你一個指標, 你無法得知該指標指向的東西是否還沒被釋放
11/12 00:10, 3F

11/12 00:11, , 4F
注意到這邊講的釋放都只是語意上, 實際上記憶體一直存在
11/12 00:11, 4F

11/12 00:12, , 5F
你釋放的是他的被重新配置權
11/12 00:12, 5F

11/12 00:14, , 6F
了解 感謝樓上大大
11/12 00:14, 6F

11/13 01:04, , 7F
ok,知道了,謝謝~~
11/13 01:04, 7F
文章代碼(AID): #1IWG0Cwc (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1IWG0Cwc (C_and_CPP)