Erf, byzarre comme bug, j'en ais jamais eu de pareil ! Ca ne devrait pourtant pas bugger

!
Pour info, tu ne peux pas libérer la variable globale : elle a forcément une valeur vu qu'elle est allouée dans le fichier ASM.
Tu devrait essayer de ne déclarer en Global que le pointeur, soit "short (*matrix)[10]=NULL;". Et dans main, tu initialise avec "malloc (17*sizeof(*matrix));" Avec un peu de chance, ça buggera plus.
Tu devrais éviter les variables globales à moins que tu veuilles que la variable retienne sa valeur. C'est pas bien, parcque ton exécutable augmente de 17*10*2 octets

, et pour pasgrand chose. Vo mieux déclarer en dynamique, et tu passe le pointeur en argument aux fonctions qui utilisent le tableau...