0

VC++コードが正常に動作していました(&)突然私はなぜ "Debug assertion failed"というエラーが出るのか理解できません。エラーを取得する「デバッグアサーションに失敗しました」エラーが突然コードの変更なしで発生しました。 (C++コードで)

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

私はVS2008をWIn7 64bit OSで使用しています。

正常に動作していたコードが、コードを変更せずに突然この方法で破損した原因は何でしょうか?

誰でもこのエラーを取り除くのを手伝ってもらえますか?私はこの前のコードは、ファイル

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()'によってオープンされたファイルが失敗し、nullポインタが 'fclose()'に渡されましたか? – hmjd

+0

関連するコードスニペット(アサーションが失敗する前のコード行)を投稿してください。 –

+0

はい質問に必要なコードを編集しました。 :) – codeLover

答えて

0

fclose()というコードを入力してください。 fopen()がNULLを返すファイルを開くことに失敗したと推測します。ファイルが存在しないためです。このエラーをチェックしておらず、NULLハンドルをfclose()に渡しました。

+0

私は、コールスタックの中で、呼び出し側がdproperlyに言及していないことを確認しています。これはMicrosoftの標準であり、私のコードではありません。 – codeLover

+0

コールスタックを読んでいる場合は、しばらくして自分のコードにアクセスする必要があります。または、コールスタックを読んでいる場合は、 – molbdnilo

+0

私がコールスタックに落ち続けるなら、私はちょうどコードがないいくつかのDLLを見つけるでしょう。あなたは何を意味していたのでしょうか? VS2008を再インストールしても正常に動作しますか? – codeLover

関連する問題