2010-07-12 27 views
1

我在測試程序中犯了很多錯誤!這可能是由於堆的腐敗,這表明cvector.exe或它已加載的任何DLL的錯誤

調試源:http://www.cppblog.com/Files/mymsdn/cvector-windows-has-triggered-a-breakpoint-in-cvector.zip

正確的版本:http://www.cppblog.com/Files/mymsdn/cvector-svn-version-10.zip

我想寫矢量結構調查的C語言版本。

如果我嘗試運行(在Microsoft Visual Studio 2008中,默認快捷方式是CTRL + F5)我的代碼。它可以作爲正確的邏輯執行,以輸出正確的結果。

但是,如果我嘗試以調試模式運行它(在Microsoft Visual Studio 2008中,默認快捷方式是F5)。這將導致一個問題:(這是從輸出窗口,也有一個警報框彙報)

HEAP [cvector.exe]:堆:在393190改性免費堆塊393168在被釋放後 Windows已經在cvector.exe中觸發了一個斷點。

這可能是由於堆的損壞,這表明cvector.exe或它已加載的任何DLL中的錯誤。

這也可能是由於用戶按下F12而cvector.exe有焦點。

輸出窗口可能有更多診斷信息。

error http://www.cppblog.com/images/cppblog_com/mymsdn/3630/o_windows-has-triggered-a-breakpoint-in-cvector.png

+0

如果我們要幫助您,您需要提供一些示例代碼或更多信息。 – SoapBox 2010-07-12 08:42:19

+0

可能你在釋放它之後使用了一個指針。你應該發佈你的代碼,讓我們看到問題的可能性。 – 2010-07-12 08:42:53

+0

看到這個:http://stackoverflow.com/a/5035063/908336 – 2013-10-13 09:15:04

回答

1

檢查調試設置。關閉「非託管代碼調試」和「SQL Server調試」。

當我使用Oracle組件獲得此功能時,這對我很有用。如果我繼續點擊繼續,則沒有發生中斷錯誤,程序繼續進行。關閉這些調試選項讓它繼續前進,程序現在可以運行。

+9

這並沒有使錯誤消失,它只是把它藏在地毯下!你所做的只是關掉調試器中的功能,當你損壞堆時警告你 - 腐敗現象仍然存在,等待下一次其他代碼嘗試使用該堆區域時,地雷爆炸。 – Crashworks 2011-07-26 22:58:25

4

此錯誤意味着您已寫入,你實際上並沒有「自己的」 —例如,你寫的內存後,它已被釋放,或該地區以外,你實際上已經與newmalloc,或通過分配的內存地址一個指針,顯然是錯誤的。

相關問題