La matrice non e' allocata/liberata correttamente e quando va a leggere i dati, accede a zone di memoria non lecite.
Quando allochi deve essere
e quando libericodice:matrix = new int*[n]; for(i=0;i<n;i++) matrix[i] = new int[n];
codice:for(i=0;i<n;i++) delete matrix[i]; delete matrix;