C ++访问冲突崩溃

时间:2012-01-24 05:58:25

标签: c++ access-violation

当我尝试访问此特定指针时,应用程序崩溃并显示c0000005访问冲突错误。

如何捕获此错误并使其不会像在C#中使用try& catch块一样关闭进程。 或者在使用之前如何检查该内存区域的访问是否被拒绝?

示例:

MyClass** a = (MyClass**)(0x12345678);
a[0]->b = 1;

我正在访问一个指针表并设置该类的一个成员的值。 这确实有效,但问题是“0x12345678”并不总是在该区域中加载类。地址有一个值,但它没有指向正确的内存区域,并且它没有保存值0.

请记住,这是一个加载到我不再拥有源代码的应用程序中的DLL。 所以我试图动态设置应用程序的设置。

1 个答案:

答案 0 :(得分:2)

您可以使用Structured Exception Handling来捕获这些类型的错误。特别是,过滤EXCEPTION_ACCESS_VIOLATION

请确保您知道在吞下异常时您正在做什么:如果您的垃圾地址指向防护页面,您可能会看到所描述的行为here