Prova a fare un po' di debugging, linea per linea, controllando sempre i valori dei puntatori per trovarne uno non valido o per trovare *esattamente* la linea che causa il fault.

Che è quello che farebbe ognuno di noi ...