我的VC++代码工作(执行)完全正常,现在突然我不明白为什么我会收到错误"调试断言失败"。
file:fddvctoolscrt_bldself_x86crtsrcfclose.c.
我在 WIn7 64 位操作系统上使用 VS2008。
工作正常的代码突然开始以这种方式中断而没有任何代码更改的原因可能是什么?
任何人都可以帮助我摆脱此错误吗?
我在调用堆栈中看到这之前的代码在文件中
C:Program Files (x86)Microsoft Visual Studio 9.0VCcrtsrccrt0dat.c
while ( pfbegin < pfend )
{
/*
* if current table entry is non-NULL, call thru it.
*/
if ( *pfbegin != NULL )
(**pfbegin)();
++pfbegin;
}
是的,fclose()
正在接收空文件指针。我真的不明白为什么这会得到错误的文件指针值,突然之间我没有对代码或环境进行任何更改。
你能提供调用fclose()
的代码吗?我可能猜测fopen()
无法打开返回 NULL 的文件,例如因为文件不存在。您没有检查此错误并将 NULL 句柄传递给 fclose()
。