Действие по умолчанию для SIGSEGV
- завершить ваш процесс.Но вы устанавливаете обработчик и переопределяете это:
/* Does nothing to "fix" what was wrong with the faulting
* instruction.
*/
void SIGSEGV_handler(int signal)
{
printf("Segmentation fault caught....\n");
printf("Value of instance variable: i = %d\n\n", i);
}
Таким образом, для каждой инструкции, запускающей sigsegv, этот обработчик называется , а инструкция перезапускается .Но ваш обработчик не сделал ничего, чтобы исправить то, что было неправильно в первую очередь с ошибочной инструкцией.
В заключение, когда инструкция будет перезапущена, она снова выйдет из строя.И снова, и снова, и ... вы поняли.