我有一个程序有时会从指针算术中出错。我知道会发生这种情况,但我不能轻易地提前检查它是否存在段错误 - 我可以“预扫描”输入数据以查看它是否会导致段错误(这可能无法确定),或者我可以修改它以不使用指针算术,这需要大量的工作,或者我可以尝试捕获段错误。所以我的问题:
1)如何在 C 中捕获段错误?我知道操作系统中的某些东西会导致段错误,但是如果 C 程序在段错误中比仅仅更优雅地死掉,那么它可以做什么Segmentation fault
呢?
2)这有多便携?
我想这是一个非常不可移植的行为,所以如果您发布任何代码来捕获段错误,请告诉我它的工作原理。我在 Mac OS X 上,但我希望我的程序可以在尽可能多的平台上运行,我想看看我的选择是什么。
别担心 - 基本上我想做的就是打印一个更用户友好的错误消息并释放一些malloc()
ed 内存,然后死掉。我不打算只是忽略我得到的所有段错误并继续前进。