首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PeekMessage()引发未处理的异常(访问冲突)

PeekMessage()引发未处理的异常(访问冲突)
EN

Stack Overflow用户
提问于 2010-09-15 21:32:35
回答 2查看 2K关注 0票数 2

大家好,

在我的应用程序中,我使用以下代码:

代码语言:javascript
复制
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)

EN

回答 2

Stack Overflow用户

发布于 2010-09-15 22:52:29

  • 向我们展示您的呼叫堆栈。如果它在msvcr100d.dll中崩溃,那么它就发生在PeekMessage之外(在调用之前或之后)。对此您应该有很好的调试信息。
  • 查看this指针(如果适用的话),
  • 在反汇编

中重新构建all

  • 步骤。
票数 0
EN

Stack Overflow用户

发布于 2010-11-22 21:13:49

我不认为你发布的调用堆栈足以从它中找出任何东西。

您是否有可能调用HandleMessages()来响应消息?这可能导致递归/堆栈耗尽。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3721998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档