大家好,
在我的应用程序中,我使用以下代码:
bool HandleMessages()
{
MSG msg;
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if (msg.message == WM_QUIT)
return FALSE;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return true;
}这是windows中用于消息处理的标准代码,但是现在当我尝试运行程序时,我总是在PeekMessage()调用中得到一个异常。
异常消息是
在0x57a10eed (msvcr100d.dll)处未处理的异常( testing.exe: 0xC0000005):读取0x6666665c位置时的访问冲突。
我完全迷失在这里,不明白为什么它会抛出一个例外。有人知道线索吗?
呼叫堆栈:
msvcr100d.dll!__local_unwind2() + 0x48 Bytes Asm
msvcr100d.dll!_except_handler3() +0seBytesASM
Testing.exe!_except_handler4(_EXCEPTION_RECORD * ExceptionRecord,_EXCEPTION_REGISTRATION_RECORD * EstablisherFrame,_CONTEXT * ContextRecord,void * DispatcherContext) + 0x24字节C
Testing.exe!_except_handler4(_EXCEPTION_RECORD * ExceptionRecord,_EXCEPTION_REGISTRATION_RECORD * EstablisherFrame,_CONTEXT * ContextRecord,void * DispatcherContext) + 0x24字节C
拆卸:
继续:
57CE0EEA lea,esi+esi*2
57 CE0EED mov,dword ptr ebx+esi*4
57CE0EF0 mov dword ptr esp+0Ch,ecx
57CE0EF4 mov dword ptr eax+0Ch,ecx
57CE0EF7 cmp dword ptr ebx+esi*4+4,0
57CE0EFC jne _lu_continue (57CE0F15h)
57CE0EFE推送101h
57CE0F03 mov eax,dword ptr ebx+esi*4+8
57CE0F07呼叫_NLG_Notify (57CE0F55h)
57CE0F0C mov eax,dword ptr ebx+esi*4+8
57CE0F10呼叫_NLG_Call (57CE0F74h)
发布于 2010-09-15 22:52:29
msvcr100d.dll中崩溃,那么它就发生在PeekMessage之外(在调用之前或之后)。对此您应该有很好的调试信息。this指针(如果适用的话),中重新构建all
发布于 2010-11-22 21:13:49
我不认为你发布的调用堆栈足以从它中找出任何东西。
您是否有可能调用HandleMessages()来响应消息?这可能导致递归/堆栈耗尽。
https://stackoverflow.com/questions/3721998
复制相似问题