我在程序中添加了一些功能後,突然出現緩衝區溢出錯誤,其中一個程序出現問題。這個錯誤在程序的最開始就出現了,這一部分與我添加的新代碼完全無關。放下幾個斷點以縮小錯誤來源後,錯誤在下一次運行中消失。隨機出現然後消失的緩衝區溢出錯誤
任何人都可以從概念上向我解釋什麼樣的情況可能會導致我遇到的問題?我並沒有要求你調試我的代碼,而是讓我對可能發生的事情有所瞭解,以便我可以避免再次遇到問題。
我在程序中添加了一些功能後,突然出現緩衝區溢出錯誤,其中一個程序出現問題。這個錯誤在程序的最開始就出現了,這一部分與我添加的新代碼完全無關。放下幾個斷點以縮小錯誤來源後,錯誤在下一次運行中消失。隨機出現然後消失的緩衝區溢出錯誤
任何人都可以從概念上向我解釋什麼樣的情況可能會導致我遇到的問題?我並沒有要求你調試我的代碼,而是讓我對可能發生的事情有所瞭解,以便我可以避免再次遇到問題。
這個錯誤有動態數據變得太長,它預先分配(編譯時,我的意思是)存儲陣列的氣味,但我認爲錯誤消息「緩衝區溢出」只是一個巧合的紅色鯡魚。作爲第一步,我會嘗試將所有靜態數組的大小加倍,或者甚至更好,將它們的大小增加一個很大的數字 - 例如100,000個 - 然後重新運行該程序。如果程序運行正常,那麼您可以通過代碼查找違規部分。
如果程序仍然爆炸,那麼您正面臨一個難以找到的bug。
HTH
- 皮特
填寫您的代碼充滿了斷言!從地獄般的經驗中學習,這是我現在在處理緩衝區處理代碼時自然而然地做的。
總是鬼鬼祟祟的他們heisenbugs,嗯? – thkala 2011-01-31 23:11:00
heisenbug ...有趣的詞,適合說至少。 – Faken 2011-01-31 23:20:36