0

我的 VC++ 代码可以正常工作(执行),现在突然间我不明白为什么会出现错误“调试断言失败”。

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

1 回答 1

0

你能提供调用的代码fclose()吗?我可能猜到fopen()无法打开返回 NULL 的文件,例如因为文件不存在。您没有检查此错误并将 NULL 句柄传递给fclose().

于 2012-04-20T09:10:11.133 回答