Becauce C ++ не может обрабатывать такие ошибки с помощью механизма исключений.
См. Неисправный C ++ по этому вопросу.
Использование sigaction(2)
.
sigaction - проверить и изменить действие сигнала
1012 * СИНТАКСИС *
#include <signal.h>
int sigaction(int signum, const struct sigaction *act,
struct sigaction *oldact);
ОПИСАНИЕ
Системный вызов sigaction () используется для изменения действия, выполняемого процессом при получении определенного
сигнал.
signum определяет сигнал и может быть любым действительным сигналом, кроме SIGKILL и SIGSTOP.
Если act не нуль, новое действие для сигнала signum устанавливается из act. Если oldact не нуль,
предыдущее действие сохраняется в oldact.
Структура sigaction определяется как что-то вроде:
struct sigaction {
void (*sa_handler)(int);
void (*sa_sigaction)(int, siginfo_t *, void *);
sigset_t sa_mask;
int sa_flags;
void (*sa_restorer)(void);
};
Вам нужно перехватить SIGSEGV, вы можете прикрепить свой собственный обработчик (функция, которая вызывается при выполнении незаконного доступа к памяти).