看板 C_and_CPP 關於我們 聯絡資訊
問題(Question): vector 存取爆炸了 餵入的資料(Input): http://codepad.org/oghLZUaQ 預期的正確結果(Expected Output): 列印出走迷宮的路徑 錯誤結果(Wrong Output): 印一個奇怪的座標 然後就停了 程式碼(Code):(請善用置底文網頁, 記得排版) http://codepad.org/YNGDFu45 補充說明(Supplement): 原本寫了 1 個多小時的版本 大致OK 後來簡化修改之後 反而完全跑不出來 QQ debug 弄了很久 毫無頭緒 只要在 mazeSolve() 內存取 explored vector 就會爆炸 拜託各位神人幫忙看一下 萬分感激 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.201.20
azureblaze:explored[x][y] xy超界或小於0? 04/14 00:37
可是在 debug mode 跑到 explored.size() 他就爆了 實在不知道為什麼 ...
linotwo:mazeSolve 裡不要用 else if 04/14 00:46
可是不加好像解不出來 ※ 編輯: cory8249 來自: 140.114.201.20 (04/14 00:49)
linotwo:你可以試試看用單步執行的方式 debug 04/14 00:49
有 我從進入 mazeSolve 開始有設 breakpoint 然後 next line 慢慢看變數 然後我發現只要有存取 explored 就會爆炸 像是第 25 . 26 行 拿來測試的 他就爆了 實在不解 因為只是個 reference 明明在 main 測試都很正常 跑進 mazeSolve() 就會爆 ... ※ 編輯: cory8249 來自: 140.114.201.20 (04/14 00:52)
linotwo:那你可能需要先去了解整套的演算法,再來檢查你的程式碼 04/14 00:52
linotwo:是不是照著你的預期在運行 04/14 00:53
linotwo:使用的是哪個編譯器? 04/14 01:02
演算法想法應該沒太大問題 因為剛剛有跑出正確答案 把語法架構修正一下 就不知道爆在哪邊了 Compiler 是 MinGW with GCC 4.7.1 ※ 編輯: cory8249 來自: 140.114.201.20 (04/14 01:11)
linotwo:應該是你的 if 跟 else 沒對到 04/14 01:19
linotwo:至於 explored 爆掉應該是 debugger 有 bug 04/14 01:20
linotwo:http://codepad.org/cIhu5jfs 04/14 01:30
後來全部參數重想重設一次 又可以正常了 大概是哪邊某個參數弄錯了 不好意思 打擾了 感謝各位幫忙 ※ 編輯: cory8249 來自: 140.114.201.20 (04/14 02:25)