这个错误发生在我的程序中:
Debug Assertion Failed!
Program:C:\JM\.\bin\ldecod.exe
File: f:\ff\vctools\crt_bld\self_x86\crt\src\fscanf.c
Line:52
Expression: (stream!=NULL)
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.
(Press Retry to debug the application.)
这里似乎有什么问题?
代码
这是我使用 fscanf 的代码部分。当 mi=297 时,它工作得非常好。
int myframe[29699];
........
if (CONCEAL==1)
{
FILE*concealfile;
concealfile=fopen("myerrsim%15carphone.txt","r");
for(mi=0; mi<14850; mi++)
{
fscanf(concealfile,"%d\n", &myframe[mi]);
}
if (myctr==currMB->mbAddrX+(((currMB)->p_Slice)->p_Img)->number*99 && currMB->mbAddrX+(((currMB)->p_Slice)->p_Img)->number>0)
{
if (myframe[myctr]==1)
{
mbmode=0;
}
myctr++;
}
}
附加问题!我遇到了几个类似的错误。这些程序在源代码的不同部分中断,其中一些内置于“fscanf”等函数中。我不知道原因。有时我电脑上的一个程序,比如“Flash Player”会通知我某种错误。这是因为我的程序中使用的指针试图访问“Flash Player”吗?为什么会发生这种情况以及可能的解决方法是什么?
简单地说,断言错误是什么?
对于@Jonathan Leffler
#ifdef _DEBUG
/*
* Report error.
*
* If _CRT_ERROR has _CRTDBG_REPORT_WNDW on, and user chooses
* "Retry", call the debugger.
*
* Otherwise, continue execution.
*
*/
if (rterrnum != _RT_CRNL && rterrnum != _RT_BANNER && rterrnum != _RT_CRT_NOTINIT)
{
switch (_CrtDbgReportW(_CRT_ERROR, NULL, 0, NULL, L"%s", error_text))
{
-> case 1: _CrtDbgBreak(); msgshown = 1; break;
case 0: msgshown = 1; break;
}
}
其中 -> 是意外断点。位于 C:\Program Files\Microsoft Visual Studio 11.0\VC\crt\src\crt0msg.c