0

我的VC++代碼正在工作(執行)完全正常&現在突然間我不明白爲什麼我會收到錯誤「Debug assertion failed」。在沒有任何代碼更改的情況下突然出現「Debug assertion failed error」錯誤。 (在C++代碼中)

file:f\dd\vctools\crt_bld\self_x86\crt\src\fclose.c. 

我在WIn7 64位操作系統上使用VS2008。

什麼原因可能是工作正常的代碼突然以這種方式突然沒有任何代碼更改突然中斷?

任何人都可以幫助我擺脫這個錯誤?

我在調用堆棧在此之前的代碼是文件

C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\crt\src\crt0dat.c 
while (pfbegin < pfend)    
    {     
     /*    
     * if current table entry is non-NULL, call thru it.    
     */      
     if (*pfbegin != NULL)     
      (**pfbegin)();    
     ++pfbegin;      
    }       

是的,fclose()正在接收一個空文件指針中看到的。我真的不明白爲什麼這會得到錯誤的文件指針值,突然間我沒有對代碼或環境做任何改變。

+4

猜測:由相應的'fopen()'打開的文件失敗,導致將空指針傳遞給'fclose()'? – hmjd 2012-04-20 08:53:18

+0

你可以請張貼任何相關的代碼片段(斷言失敗之前的代碼行)? – 2012-04-20 08:53:18

+0

是的,我編輯了我的問題中必要的代碼。 :) – codeLover 2012-04-20 09:03:53

回答

0

您能否提供撥打fclose()的電話號碼? 我猜測fopen()無法打開返回NULL的文件,例如因爲文件不存在。你沒有檢查這個錯誤,並通過了fclose()的NULL句柄。

+0

我在調用堆棧中觀察到調用者沒有提到它不正確,它又是一些標準的微軟給定文件,而不是我的代碼,並且1奇怪的是我觀察到即使我將F10用於行直接調用這個「DEBUG ASSERTION FAILED ERROR」,所以不能正確地做出任何非常奇怪的行爲 – codeLover 2012-04-20 09:50:19

+0

如果你一直讀下來的callstack,你必須在某個時候到達你自己的代碼,或者你有完全粉碎堆棧 – molbdnilo 2012-04-20 10:05:55

+0

如果我繼續在調用堆棧中繼續下去,我只是發現一些Dll,沒有代碼再次微軟dll。你可以讓我知道你是什麼意思「完全搗毀堆棧?我的VS設置損壞了嗎?如果我重新安裝我的VS2008,它會起作用嗎? – codeLover 2012-04-20 10:31:02

相關問題