git url
https://github.com/descent/scheme_eval
git branch add
git commit: 254282e3336ed62010d0a62500aeb2d60665fd04
這篇要紀錄一個很奇怪的執行錯誤:
程式在執行後吐出 L16 之後的錯誤訊息, 真是令人害怕。出問題的程式碼在下面:
L160 沒有正確 return cell 就引發這錯誤, 實在令我驚訝, L409 呼叫 proc_add 後, 我也沒有用到 return 的 cell, 就算我沒在 proc_add return cell, 應該也不會有錯阿, 我是這麼想的。
一定有程式碼執行了什麼才引發這錯誤, 雖然我沒使用回傳的 cell object, 但是 c++ compiler 幫我們安插了 destructor, 應該是在執行這個 destructor 時發生錯誤的。
有發動 std::string destructor 但是該位址上的東西不是可以正常執行的, 因為我沒 return cell, 那個空間是未知程式碼, 所以就造成這可怕的結果。
我沒有反組譯來證明, 這是
冥想出來的。歡迎有其他想法的朋友一起討論。
沒有留言:
張貼留言
使用 google 的 reCAPTCHA 驗證碼, 總算可以輕鬆留言了。
我實在受不了 spam 了, 又不想讓大家的眼睛花掉, 只好放棄匿名留言。這是沒辦法中的辦法了。留言的朋友需要有 google 帳號。