MFC(vs2005)出现0x7147f8c3 处未处理的异常: 0xC0000005: 读取位置 0xfeeefef2 时发生访问冲突?
我的程序是MFC+ArcEngien 9.3进行二次开发的。IDE采用着VS2005。程序编译没错,只是运行一会后突然之间弹出一个对话框:
Map.exe 中的 0x7147f8c3 处未处理的异常: 0xC0000005: 读取位置 0xfeeefef2 时发生访问冲突
我点击中断,观察调用堆栈信息,如下:
FeatureLayer.dll!7147f8c3()
[下面的框架可能不正确和/或缺失,没有为 FeatureLayer.dll 加载符号]
FeatureLayer.dll!7147c479()
Map.dll!0363a931()
Map.dll!0363fa73()
Geometry.dll!72ca2c56()
Map.dll!0363ffbd()
MapControl.ocx!021ead06()
MapControl.ocx!021ef5b1()
MapControl.ocx!021e77a8()
MapControl.ocx!0220250c()
MapControl.ocx!022023e6()
MapControl.ocx!02201fdd()
MapControl.ocx!021fd7d6()
user32.dll!775cc4e7()
user32.dll!775cc5e7()
user32.dll!775cc590()
user32.dll!775c1b31()
user32.dll!775c1b57()
AfCore.dll!6835b66a()
Display.dll!6bd2fefe()
AfCore.dll!6835c4ce()
user32.dll!775cc4e7()
user32.dll!775cc5e7()
user32.dll!775cc590()
user32.dll!775c1b31()
user32.dll!775c1b57()
mfc80ud.dll!CWnd::DefWindowProcW(unsigned int nMsg=15, unsigned int wParam=0, long lParam=0) 行1029 + 0x20 字节C++
mfc80ud.dll!CWnd::WindowProc(unsigned int message=15, unsigned int wParam=0, long lParam=0) 行1742 + 0x1c 字节C++
mfc80ud.dll!AfxCallWndProc(CWnd * pWnd=0x00029a60, HWND__ * hWnd=0x0004074a, unsigned int nMsg=15, unsigned int wParam=0, long lParam=0) 行240 + 0x1c 字节C++
mfc80ud.dll!AfxWndProc(HWND__ * hWnd=0x0004074a, unsigned int nMsg=15, unsigned int wParam=0, long lParam=0) 行389C++
>mfc80ud.dll!AfxWndProcBase(HWND__ * hWnd=0x0004074a, unsigned int nMsg=15, unsigned int wParam=0, long lParam=0) 行411 + 0x15 字节C++ user32.dll!775cc4e7()
user32.dll!775c5f9f()
user32.dll!775cc590()
user32.dll!775c4f0e()
user32.dll!775c4f7d()
ntdll.dll!77796fce()
user32.dll!775c4ec3()
user32.dll!775c5d0c()
user32.dll!775c5d33()
user32.dll!775ccc70()
ole32.dll!76f06ad5()
ole32.dll!76ebd048()
ole32.dll!76ec2d31()
ole32.dll!76fdd2f6()
ole32.dll!76fdd098()
ole32.dll!76fdcef0()
ntdll.dll!777a6500()
ole32.dll!76ed0e5b()
ole32.dll!76ee2df0()
ole32.dll!76ec2cba()
ole32.dll!76ed9aa1()
ole32.dll!76ecf464()
ole32.dll!76ed9b24()
rpcrt4.dll!76d0ee11()
ole32.dll!76fdce06()
rpcrt4.dll!76cf4926()
rpcrt4.dll!76d65753()
ntdll.dll!777d9e89()
ntdll.dll!7777eb4a()
ntdll.dll!777a5d63()
ntdll.dll!777a5d63()
ntdll.dll!777a5a70()
usp10.dll!778f6aad()
usp10.dll!778e7446()
usp10.dll!778f4228()
ntdll.dll!778158e6()
ntdll.dll!77816169()
ntdll.dll!77816152()
ntdll.dll!77816152()
ntdll.dll!777da3ba()
ntdll.dll!777a5d63()
ntdll.dll!777da63e()
ntdll.dll!7777eb4a()
ntdll.dll!777a5d63()
ntdll.dll!777da63e()
ntdll.dll!777a5d63()
ntdll.dll!777a5a70()
ntdll.dll!777a5d63()
ntdll.dll!777a5a70()
ole32.dll!76ed0682()
ole32.dll!76ed0682()
ole32.dll!76ed265b()
ole32.dll!76fdc8e2()
ole32.dll!76ed98ad()
ole32.dll!76ed5d2c()
ole32.dll!76ed637b()
ole32.dll!76ee2ea8()
ole32.dll!76ee3170()
ole32.dll!76ee48fb()
ole32.dll!76ee3098()
ntdll.dll!777da63e()
ntdll.dll!7777eb4a()
ntdll.dll!777a5d63()
ntdll.dll!777da63e()
ntdll.dll!777da1ad()
ntdll.dll!777a6500()
ntdll.dll!777a5d63()
ntdll.dll!777a5a70()
ntdll.dll!777a5d63()
ntdll.dll!777a6500()
ntdll.dll!778158e6()
ntdll.dll!7781688f()
ntdll.dll!77816873()
ntdll.dll!7777e379()
ntdll.dll!77816873()
ntdll.dll!777da0ee()
ntdll.dll!777a6500()
ntdll.dll!7777e2dc()
ole32.dll!76eea6c2()
ole32.dll!76eea1bd()
ole32.dll!76eea61f()
ole32.dll!76eea6c2()
ole32.dll!76eea1bd()
ole32.dll!76eeab0f()
ole32.dll!76eeab2c()
ole32.dll!76eeb20c()
ole32.dll!76ee2f34()
ntdll.dll!777da3ba()
ntdll.dll!777a5d63()
ole32.dll!76ee9e25()
ole32.dll!76ee9d86()
ole32.dll!76ee9d3f()
AfCore.dll!68320310()
AfCore.dll!683205a3()
AfLockMgr.dll!68551951()
ShapefileFDB.dll!0298a737()
ShapefileFDB.dll!029a1745()
ShapefileFDB.dll!029cdea6()
ShapefileFDB.dll!029a9868()
oleaut32.dll!76db3ea3()
FdaCore.dll!711d7b8d()
FdaCore.dll!711d8276()
ShapefileFDB.dll!029a99f5()
FeatureLayer.dll!714b9369()
FeatureLayer.dll!714b2fa7()
Map.exe!CAssessmentProcess::CreateTextElement(_com_ptr_t<_com_IIID<ILayer,&_GUID_34c20002_4d3c_11d0_92d8_00805f7c28b0> > pLayer={...}, _com_ptr_t<_com_IIID<IMap,&_GUID_e6bdaa75_4d35_11d0_98be_00805f7ced21> > m_Map={...}, double X=117.63005023087364, double Y=38.833505602761129) 行446 + 0x37 字节C++
Map.exe!CMapView::OnMouseDownMapcontrol1(long button=1, long shift=0, long X=762, long Y=320, double mapX=117.63005023087364, double mapY=38.833505602761129) 行1723C++
mfc80ud.dll!_AfxDispatchCall(void (void)* __formal=0x951319bb, void (void)* __formal=0x951319bb, void (void)* __formal=0x951319bb) 行40C++
mfc80ud.dll!CCmdTarget::CallMemberFunc(const AFX_DISPMAP_ENTRY * pEntry=0x00512ae0, unsigned short wFlags=1, tagVARIANT * pvarResult=Empty, tagDISPPARAMS * pDispParams=0x0012f7d4, unsigned int * puArgErr=0x0012f640) 行1064 + 0xf 字节C++
mfc80ud.dll!CCmdTarget::OnEvent(unsigned int idCtrl=1001, AFX_EVENT * pEvent=0x0012f744, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000) 行91 + 0x3a 字节C++
mfc80ud.dll!COccManager::OnEvent(CCmdTarget * pCmdTarget=0x00029940, unsigned int idCtrl=1001, AFX_EVENT * pEvent=0x0012f744, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000) 行138C++
mfc80ud.dll!CCmdTarget::OnCmdMsg(unsigned int nID=1001, int nCode=-2, void * pExtra=0x0012f744, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000) 行305 + 0x28 字节C++
mfc80ud.dll!CView::OnCmdMsg(unsigned int nID=1001, int nCode=-2, void * pExtra=0x0012f744, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000) 行162 + 0x18 字节C++
mfc80ud.dll!COleControlSite::OnEvent(AFX_EVENT * pEvent=0x0012f744) 行1061C++
mfc80ud.dll!COleControlSite::XEventSink::Invoke(long dispid=1, const _GUID & __formal={...}, const _GUID & __formal={...}, unsigned short wFlags=1, tagDISPPARAMS * pDispParams=0x0012f7d4, tagVARIANT * pvarResult=Empty, tagEXCEPINFO * pExcepInfo=0x00000000, unsigned int * puArgError=0x00000000) 行2400C++
MapControl.ocx!021eb3a3()
MapControl.ocx!021f6f5e()
MapControl.ocx!022020c4()
MapControl.ocx!021fd7d6()
user32.dll!775cc4e7()
user32.dll!775cc5e7()
user32.dll!775cc590()
user32.dll!775c1b31()
user32.dll!775c1b57()
AfCore.dll!6835b66a()
Display.dll!6bd2fefe()
AfCore.dll!6835c4ce()
user32.dll!775cc4e7()
user32.dll!775cc5e7()
user32.dll!775cc590()
user32.dll!775c1b31()
user32.dll!775c1b57()
mfc80ud.dll!CWnd::DefWindowProcW(unsigned int nMsg=513, unsigned int wParam=1, long lParam=20972282) 行1029 + 0x20 字节C++
mfc80ud.dll!CWnd::WindowProc(unsigned int message=513, unsigned int wParam=1, long lParam=20972282) 行1742 + 0x1c 字节C++
mfc80ud.dll!AfxCallWndProc(CWnd * pWnd=0x00029a60, HWND__ * hWnd=0x0004074a, unsigned int nMsg=513, unsigned int wParam=1, long lParam=20972282) 行240 + 0x1c 字节C++
mfc80ud.dll!AfxWndProc(HWND__ * hWnd=0x0004074a, unsigned int nMsg=513, unsigned int wParam=1, long lParam=20972282) 行389C++
mfc80ud.dll!AfxWndProcBase(HWND__ * hWnd=0x0004074a, unsigned int nMsg=513, unsigned int wParam=1, long lParam=20972282) 行411 + 0x15 字节C++
user32.dll!775cc4e7()
user32.dll!775cc5e7()
user32.dll!775cc590()
user32.dll!775ccc19()
user32.dll!775ccc70()
user32.dll!775c41eb()
mfc80ud.dll!COccManager::IsDialogMessageW(CWnd * pWndDlg=0x00029940, tagMSG * lpMsg=0x003097e8) 行805 + 0x11 字节C++
mfc80ud.dll!CWnd::IsDialogMessageW(tagMSG * lpMsg=0x003097e8) 行195 + 0x20 字节C++
mfc80ud.dll!CWnd::PreTranslateInput(tagMSG * lpMsg=0x003097e8) 行4268C++
mfc80ud.dll!CFormView::PreTranslateMessage(tagMSG * pMsg=0x003097e8) 行230C++
mfc80ud.dll!CWnd::WalkPreTranslateTree(HWND__ * hWndStop=0x000b07f6, tagMSG * pMsg=0x003097e8) 行2882 + 0x14 字节C++
mfc80ud.dll!AfxInternalPreTranslateMessage(tagMSG * pMsg=0x003097e8) 行233 + 0x12 字节C++
mfc80ud.dll!CWinThread::PreTranslateMessage(tagMSG * pMsg=0x003097e8) 行773 + 0x9 字节C++
mfc80ud.dll!AfxPreTranslateMessage(tagMSG * pMsg=0x003097e8) 行252 + 0x11 字节C++
mfc80ud.dll!AfxInternalPumpMessage() 行178 + 0x18 字节C++
mfc80ud.dll!CWinThread::PumpMessage() 行896C++
mfc80ud.dll!CWinThread::Run() 行625 + 0xd 字节C++
mfc80ud.dll!CWinApp::Run() 行894C++
mfc80ud.dll!AfxWinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, wchar_t * lpCmdLine=0x00303908, int nCmdShow=1) 行47 + 0xd 字节C++
Map.exe!wWinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, wchar_t * lpCmdLine=0x00303908, int nCmdShow=1) 行33C++
Map.exe!__tmainCRTStartup() 行589 + 0x35 字节C
Map.exe!wWinMainCRTStartup() 行414C
KERNEL32.DLL!7751ed6c()
ntdll.dll!777b377b()
ntdll.dll!777b374e()
错误箭头指向:
AfxWndProcBase(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
{
AFX_MANAGE_STATE(_afxBaseModuleState.GetData());
return AfxWndProc(hWnd, nMsg, wParam, lParam)
}
指向着上面的return处。。
查看nMSG消息,发现该消息就是WM_PAINT
[解决办法]
这个只能自己看了,看哪写的有问题。你可以先看一下引起崩溃的地方,看看是访问了空指针还是别的什么。
[解决办法]
指针异常等,可能还是ArcEngien 9.3等有问题或者调用有问题
[解决办法]
空指针或资源泄漏。
运行时,监控一下内存消耗。