c++ - 为什么要捕获访问冲突?

标签 c++ error-handling access-violation

与 C++ 异常不同,访问冲突表示您的应用程序运行时受到损害,因此您的应用程序状态未定义。在这种情况下最好的办法是退出您的应用程序(通常为您完成,因为它会崩溃)。

我注意到可以捕获这些异常之一。例如,在 Microsoft Visual C++ 中,您可以使用 /EHa__try/__catch 来执行此操作。

那么,您想捕获它们的原因是什么?据我了解,您的应用程序无法恢复。

最佳答案

您可以从访问冲突中恢复。

例如,您可以通过使用 VirtualAlloc 分配一些地址空间来创建一个动态数组,但将它指向的内存标记为不存在。然后,当您尝试使用某些内存时,您会捕获到访问冲突,映射发生访问的内存页,然后重试导致冲突的指令。

关于c++ - 为什么要捕获访问冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11109304/

相关文章:

c++ - 如何在不重载 `std::multiset` 、 `operator()` 、 `std::less` 的情况下为 `std::greater` 提供自定义比较器?

python - 尝试/排除某种类型的所有 Python 错误

error-handling - Symfony 3表单错误未显示在 Twig 模板中

c++ - 从私有(private)成员值类型 (bool) 读取的 VC++ 访问冲突

c++ - app.exe已经触发了断点,后面是Access violation writing location

c# - 调用 c++ 库中定义的函数时,c# 中出现 AccessViolationException

c++ - 查找数组中的某个最大值

c++ - 读出 XML 在 C++ 中提供意外输出

c++ - 为什么在 C/C++ 多维数组中 a[0] 与 a 相同?

bash - 有没有办法捕获管道命令中的失败?