看板 EE_DSnP 關於我們 聯絡資訊
※ 引述《goodword (佳話)》之銘言: : 如題 : 若 file1 內有一行恰好就叫做 do file1 : 那麼 mcalc> do file1 便應該會使程式陷入無窮迴圈 : 所以老師要我們限制 max recursion depth = 1024 : 可是我拿 modCalc.ref 測試的結果仍是會 程式記憶體區段錯誤 crash了 : 當然我也是有限制 recursion depth = 1024 但也是 程式記憶體區段錯誤 : 所以我檢查過後發現 _dofileStack.size() 等於511時便已經crash了 : 所以我把 recursion depth 改小一些 (我改成限制在500) : 結果程式便真的停在 _dofileStack.size() 等於500的時候 : 然後我用 exit(1); 結束程式 ←這兒是這樣做嗎 還是還要pop出所存的指令?? : 而我想1024不行的原因會不會是 ccws* 的記憶體不大? : 不夠放這麼多 _dofileStack? : 很多問題 麻煩老師了 : 謝謝老師 這其實是 ref program 的一個 bug... 原因是出在 MAX_HISTORY 被定義成 1024, 所以當 recursive 呼叫時會使得 _historySize > 1024 所以會 crash... 這個目前沒有簡單的 fix, 除非我們的 _history[] 可以 wrap-around... 不過有一個簡單的 work around, 就是將 MAX_HISTORY 設大一點, 比方說 65536, 那麼只要 dofile1 的內容不要太多, 加起來不要超過 65536 個指令, 應該就不會 crash... 先這樣, 等我有空在好好修一下. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.224.46.66