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

相关问题