C++访问冲突崩溃

C++ access violation crash

本文关键字:崩溃 访问冲突 C++      更新时间:2023-10-16

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

我如何才能捕捉到这个错误并防止它像在C#中那样关闭进程;挡块。或者,在使用之前,我如何检查是否拒绝访问该内存区域?

示例:

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

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

请记住,这是一个加载到应用程序中的DLL,我不再有它的源代码。因此,我尝试动态地设置应用程序的设置。

您可以使用结构化异常处理来捕获这类错误。特别是EXCEPTION_ACCESS_VIOLATION的过滤器。

只要确保你在接受异常时知道自己在做什么:如果你的垃圾地址指向一个保护页,你可能会看到这里描述的行为。