在C++中处理CPU异常

Jan*_*cek 7 c++ cpu signals exception

是否有一种跨平台的方式来处理CPU异常,如分段错误或除零?可以说,我需要调用一些可能不安全的函数(例如来自插件文件),这可能导致段错误,或者在执行之前我无法测试的其他一些问题.我知道,C标准库有信号处理功能,但我不知道如何使用它们来处理问题以避免程序终止(我猜,我不能只是在有问题的函数执行之前跳转到该位置,或者我可以?).在Windows下我可以使用SEH异常处理程序,但我无法在Linux或任何其他操作系统下执行此操作.如何使用我自己的异常处理程序来处理这些问题,Windows/Linux之间的差异有多大?这是否可能(通过汇编程序 - 让我们说只是在x86平台上)?

我主要是出于好奇,我不是想解决现有的问题.谢谢

Ada*_*eld 5

libsigsegv是一个用于处理分段错误和堆栈溢出的跨平台库.但是,在绝大多数情况下,当您检测到分段错误时,正确的做法是尽可能快地终止执行,而不是尝试从中恢复.段错误通常表示存在错误或内存损坏,一旦内存损坏,几乎不可能从中恢复.