【发布时间】:2012-04-20 08:50:59
【问题描述】:
我的 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() 正在接收一个空文件指针。我真的不明白为什么会突然出现错误的文件指针值,而我却没有对代码或环境进行任何更改。
【问题讨论】:
-
能否贴出相关代码sn-p(断言失败前的代码行)?
-
猜测:对应
fopen()打开的文件失败,导致将空指针传递给fclose()? -
是的,我已经在我的问题中编辑了必要的代码。 :)
-
pfbegin和pfend是什么类型?声明? -
是的,一些错误需要很长时间才能显示出任何效果是很常见的。测试永远无法涵盖所有可能的输入组合和情况。
标签: c++ visual-studio-2008 visual-c++ visual-studio-debugging assertions