2012-07-24 219 views
3

VS2008,C.還使用一些預建庫。 當我通過我的代碼在調試器和在庫函數被調用步驟,我得到這個:如何調試可能的堆損壞?

HEAP [unit_test.exe]:堆失蹤近 35c70的Windows在承諾範圍內最後一個條目已觸發斷點在unit_test.exe中。

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

這也可能是由於用戶按F12,而unit_test.exe具有 焦點。

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

有關如何調試的任何想法?

更新:我重構了代碼,看到在執行printf()時我得到了彈出窗口。有空閒時我也會得到它()。我註釋掉了這些行,現在有一個malloc()時,我得到堆腐敗彈出對話框。

+0

你應該更具體:你使用哪個庫和哪個函數? – holgac 2012-07-24 18:17:13

+1

有幾個選項可供您使用,具體取決於您的代碼是什麼樣的。如果你直接分配和修改堆空間,那麼你可以在一個指針中的調試器中設置一個監視點,並試着看看你的一些操作是否在執行它們不應該執行的操作,比如超出緩衝區。 – AlcoJaguar 2012-07-24 18:32:38

+0

@AlcoJaguar我打電話malloc和免費(平臺是Windows XP)。你的意思是把手錶放在所有的指針上? – likejiujitsu 2012-07-25 18:55:13

回答