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