您的位置:首页 > 编程语言 > C语言/C++

Catch a Memory Access Violation in C++

2018-08-27 13:45 2855 查看

From:  https://stackoverflow.com/questions/16612444/catch-a-memory-access-violation-in-c

 

In C++, is there a standard way (or any other way, for that matter) to catch an exception triggered by a memory access violation?

For example, if something went wrong and the program tried to access something that it wasn't supposed to, how would you get an error message to appear saying "Memory Access Violation!" instead of just terminating the process and not showing the user any information about the crash?

I'm programming a game for Windows using MinGW, if that helps any.

[Answer]

Access violation
 is a hardware exception and cannot be caught by a standard 
try...catch
.

Since the handling of hardware-exception are system specific, any solution to catch it inside the code would also be system specific.

On Unix/Linux you could use a 

SignalHandler
 to do catch the 
SIGSEGV
 signal
.

On Windows you could catch these structured exception using the 

__try/__except
 statement.

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐