A melhor aposta é provavelmente aprender como depurar seu código usando o gdb. Crie seu código com o sinalizador -g (para ativar os símbolos de depuração) e, em seguida, execute no lado gdb, por exemplo,
gdb ./nameofyourprogram
quando a falha de segmentação ocorre, digite "where" e você verá onde ela falha. Aprender a depurar código é tão importante quanto aprender a codificar. Também pode ser uma boa ideia se familiarizar com o depurador usando um guia de primeiros passos on-line .