我怎样才能捕获内存异常?

时间:2015-09-11 16:50:13

标签: c++ windows memory seh

我遇到了捕获异常的问题,这是错误:

  

Hello.exe中0x01034BB1处的未处理异常:0xC0000005:Access   违规阅读地点0x02343DA2。

这是我的代码:

_id

我只有一个问题:捕获的原因是什么?

2 个答案:

答案 0 :(得分:2)

这不是您可以捕获的C ++异常,它正在访问无效内存。无法保证该过程处于理智的状态以捕获任何东西。

在你的特定情况下,pTemp可能有些错误,也许这是一个常数。告诉我们代码。

答案 1 :(得分:1)

您可以使用SEH exceptions抓住try-except Statement__try__except关键字特定于Microsoft的编译器。

但有一些注意事项:

  • 您不能混合使用C ++和SEH异常处理。结果将是未定义的。
  • 不正确地处理SEH异常可能会危及流程的完整性。
  • SEH异常处理程序仅应在极少数情况下使用。在您的具体情况下,它可能会隐藏在其他地方挥之不去的错误。

有了这个,您应该分析问题,并修复错误。您可以使用Application Verifier轻松捕获内存损坏错误。当引发SEH异常时,您还可以将Visual Studio的调试器设置为中断(调试 - > Windows - > 异常设置 Win32例外)。