2013-02-28 33 views
1

這個錯誤是什麼意思?在練習2.16中0x00E22277未處理的異常 - 訓練重新排列.exe:0xC00000FD:堆棧溢出(參數:0x00000000,0x002A2000)

未處理的異常在0x00E22277在練習2.16 - 火車 重新arrangement.exe:0xC00000FD:堆棧溢出(參數: 00000000,0x002A2000)。

這阻止我從運行我的程序...... 我不明白什麼是「堆棧溢出」的手段和我需要什麼,以處理這個異常怎麼辦?

整個代碼是有點長,所以我會總結一下吧:

它獲取用戶輸入,並經過一個無限while循環,以處理輸入。如果語句和某些情況得到滿足,則會中斷並且程序終止+輸出處理的數據。

此程序在NetBeans上運行良好(我不知道爲什麼),但Visual Studio中的調試程序說有未處理的異常,所以無法運行.... 因此,我認爲這很容易固定?

+0

最常見的原因是非常深的(或無限)遞歸,儘管其他原因是可能的。沒有代碼,我們不能說。 – FatalError 2013-02-28 03:11:36

+0

當你有一個調用自己的方法或調用另一個調用第一個方法的方法時,可能會發生堆棧溢出。你有這樣的事嗎? – Blorgbeard 2013-02-28 03:13:03

+2

如果它在NetBeans中有效,那麼更典型的原因是將一個非常大的數組分配爲局部變量,一個兆字節或更多。確保構建Debug配置,以便在爆炸之前提早發現錯誤。你必須發佈代碼才能得到準確的答案。 – 2013-02-28 03:21:42

回答

6

當你有一個無限遞歸時,即當一個函數自己調用(直接或間接)並且不返回時,通常會發生堆棧溢出。因此,每次調用都會在堆棧中產生更多數據,直到沒有更多空間並且程序終止爲止。

+1

或者當人們做一些愚蠢的事情時,比如從用戶輸入中創建VLA(或者真的使用VLA的......) – 2013-02-28 03:18:59

+1

我沒有使用遞歸,它是大數組聲明 – LarsChung 2013-02-28 06:32:16

+0

修正了它無論如何... Thx for the幫助傢伙! – LarsChung 2013-02-28 08:55:48

相關問題