Если вы подключите обработчик к SIGSEGV, вы ничего не сможете сделать, кроме как зарегистрировать тот факт, что ошибка произошла и изящно завершилась ошибкой. Ваша программа находится в неопределенном состоянии, когда происходит это нарушение, и поэтому может быть небезопасно продолжать нормальную работу.
Помимо проверки на NULL, я не верю, что есть способ проверить, является ли указатель «действительным» в том смысле, который вы описываете. Во время нормальной работы подобные ошибки не должны возникать, поскольку они представляют собой ошибку, поэтому вы должны захотеть, чтобы ваша программа не работала, хотя и изящно.