Ca, à mon humble avis, ça pue le débordement...
Un indice qui va au delà des limites d'un tableau, ou un pointeur qui pointe n'importe où (d'ailleurs ça revient au même).
La différence vient qu'en "mode debug", la mémoire allouée au process est plus importante pour permettre justement l'utilisation du debuggeur; ton pointeur qui pointe mal doit continuer à taper dans une zone réservée au process malgrè tout. En "mode exe" pas de débuggeur, moins de mémoire, donc au premier débordement->crash.
On voit aussi des symptômes équivalents en rajoutant des "printf" dans un code C...