Captura de segfaults en C

Tengo un programa que a veces se separa de la aritmética del puntero. Sé que esto sucede, pero no puedo verificar fácilmente con anticipación para ver si falla o no; tampoco puedo "escanear previamente" los datos de entrada para ver si causará una falla predeterminada (que puede ser imposible de determinar), o puedo volver a instalarlo para que no use la aritmética del puntero, lo que requeriría una cantidad de trabajo significativamente mayor, o puedo tratar de detectar una falla predeterminada. Entonces mi pregunta:

1) ¿Cómo, en C, puedo detectar un segfault? Lo séalguna cos en el sistema operativo causa una falla de seguridad, pero ¿qué puede hacer un programa en C en caso de que no muera con más gracia que solo Segmentation fault?

2) ¿Qué tan portátil es esto?

Me imagino que este es un comportamiento altamente inportable, así que si publicas un código para detectar un defecto, por favor dime en qué funciona. Estoy en Mac OS X pero me gustaría que mi programa funcione en tantas plataformas como sea posible y quiero ver cuáles son mis opciones.

Y no se preocupe, básicamente todo lo que quiero hacer es imprimir un mensaje de error más fácil de usar y liberar algunosmalloc()emoria @ed, y luego morir. No planeo simplemente ignorar todos los fallos que obtengo y seguir adelante.

Respuestas a la pregunta(8)

Su respuesta a la pregunta