注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

mie

 
 
 

日志

 
 

VC 2005:Bc.exe 中的 0x00425a0d 处未处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突  

2011-05-01 13:09:25|  分类: 编译错误 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Bc.exe 中的 0x00425a0d 处未处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突

空指针操作导致进程崩溃。Debug版本正常,Release版本崩溃。跟踪调试:
D:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\src\mfc\winmain.cpp(39行):
int AFXAPI AfxWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
__in LPTSTR lpCmdLine, int nCmdShow)
{
ASSERT(hPrevInstance == NULL);

int nReturnCode = -1;
CWinThread* pThread = AfxGetThread();
CWinApp* pApp = AfxGetApp();

// AFX internal initialization
if (!AfxWinInit(hInstance, hPrevInstance, lpCmdLine, nCmdShow))
goto InitFailure;

// App global initializations (rare)
if (pApp != NULL && !pApp->InitApplication())
goto InitFailure;

// Perform specific initializations
if (!pThread->InitInstance())                        //崩溃!
{
if (pThread->m_pMainWnd != NULL)
{
TRACE(traceAppMsg, 0, "Warning: Destroying non-NULL m_pMainWnd\n");
pThread->m_pMainWnd->DestroyWindow();
}
nReturnCode = pThread->ExitInstance();
goto InitFailure;
}
nReturnCode = pThread->Run();

InitFailure:
#ifdef _DEBUG
// Check for missing AfxLockTempMap calls
if (AfxGetModuleThreadState()->m_nTempMapLock != 0)
{
TRACE(traceAppMsg, 0, "Warning: Temp map lock count non-zero (%ld).\n",
AfxGetModuleThreadState()->m_nTempMapLock);
}
AfxLockTempMaps();
AfxUnlockTempMaps(-1);
#endif

AfxWinTerm();
return nReturnCode;
}

分析与解决:
        从问题表象上看,应该是pThread为NULL,导致空指针访问,进而导致进程崩溃。那么,为什么pThread为NULL?唯一的一种可能就是线程创建失败!
        于是,查看Release工程配置,发现是静态链接了MFC库!改为动态链接MFC库,OK!

BY:zhanyonhu


  评论这张
 
阅读(5712)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016