[問題] 沒做什麼,值卻不一樣了
開發平台(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):
不知道哪裡出錯了,麻煩大家幫我看一下,謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.231.115.137
推
11/11 22:07, , 1F
11/11 22:07, 1F
剛剛試了,在head=InsertNode(0);前面加了
head=(tree_pointer)malloc(sizeof(Node));
在return 0前面加了free,但是這樣就會當掉耶
若不加free的話,output就還是跟上面的一樣。
看起來是記憶體那邊被更動了?
可是平常存值不是都不會遇到這種問題嗎@@?
※ 編輯: wk4xu4j 來自: 61.231.115.137 (11/11 22:17)
→
11/11 22:24, , 2F
11/11 22:24, 2F
→
11/11 22:24, , 3F
11/11 22:24, 3F
→
11/11 22:28, , 4F
11/11 22:28, 4F
我知道malloc哪裡用錯了,既然分配了就不該再把head指到InsertNode傳回
來的地方,所以要直接從head去改他的key值。
可是我不太懂為什麼原本只用InsertNode不行,
是因為call function的次數不一定,所以用function建新東西算是動態的
嗎?但我在InsertNode中沒有用malloc把那塊記憶體鎖起來,所以就有可能
被別人用掉?
※ 編輯: wk4xu4j 來自: 61.231.115.137 (11/11 23:22)
→
11/11 23:27, , 5F
11/11 23:27, 5F
→
11/11 23:28, , 6F
11/11 23:28, 6F
→
11/11 23:29, , 7F
11/11 23:29, 7F
嗯,知道了,這樣感覺不用malloc的情況是不是有點少,只有在生出這個變數
是很清楚知道這個變數是要做一些特定計算的時候?
還有謝謝你耐心的引導,謝謝!
※ 編輯: wk4xu4j 來自: 61.231.115.137 (11/11 23:43)
→
11/11 23:50, , 8F
11/11 23:50, 8F
→
11/11 23:51, , 9F
11/11 23:51, 9F
→
11/11 23:52, , 10F
11/11 23:52, 10F
一般的變數是離開那個function的時候會被釋放,
而static和global則是一直到程式結束前都會在,所以可以任意指他用他都沒關係
然後malloc則是在free之前用他都沒問題。
瞭解了,所以還是得先想一下用途再來決定變數的設法,我完全沒有考慮到 /__\
※ 編輯: wk4xu4j 來自: 61.231.115.137 (11/12 00:23)
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章
13
22