hur.cn - 华软网

 热门搜索

fclose出错 引起程序崩溃 求解决办法

  作者:未知    来源:网络    更新时间:2009/2/18
犯错信息
应用程序 Gateway.exe 产生了一个应用程序毛病 此毛病发生在 01/27/2009 @ 02:37:05.208 所产生的意外情况为 c0000005,在地址 77BA1A02 (msvcrt!fclose)处

有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。

毛病应用程序 Gateway.exe,版本 1.0.0.1,毛病模块 msvcrt.dll,版本 7.0.3790.3959,毛病地址 0x00031a02。

有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。




我以为是fclose关闭异常

void AddStateRecord( const char *format, ... )
{
va_list marker;
va_start( marker, format );     // Initialize variable arguments. 
vsprintf( logbuf, format, marker );
va_end( marker ); // Reset variable arguments. 
FILE *flog = NULL;// 系统日志资料句柄

#ifdef _DEBUG
OutputDebugString( logbuf );
#endif
CString FilePath = csWorkLogPath;
CTime time = CTime::GetCurrentTime();
CString m_strTime = time.Format("%Y-%m-%d-%H");
FilePath = FilePath+m_strTime+".txt";

flog = fopen( FilePath, "aw+" );
if( NULL == flog )
{
#ifdef _DEBUG
OutputDebugString( "fopen error!");
OutputDebugString( FilePath);
#endif
return;
}
//fflush( flog );
fwrite( logbuf, 1, strlen( logbuf ), flog );
        fclose (flog);
}

---华软 网友回答---
一般应该是指针越界,
检查一下logbuf
---华软网友回复---
没有"aw+"这样的模式,a和w只可有一个。
---华软网友回复---
你Debug一下程序 看一下stack
是否是指针越界了
---华软网友回复---
if(flog)
  fclose (flog); 

加点检查...
---华软网友回复---
if(flog)
  fclose (flog); 
通常写法
---华软网友回复---
引用 2 楼 cnzdgs 的回复:
没有"aw+"这样的模式,a和w只可有一个。


a+就能够了
---华软网友回复---
这里有好文章http://armlinux.uueasy.com/read.php?tid=4&page=1&toread=1#223      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。