Comment fais-tu pour voir cette taille ?
En utilisant sizeof ? strlen ? en faisant tourner l'application avec un debuggeur ?
D'après le code qui est montré, un tableau de 50 entiers est réservé sur la pile dans la fonction main(). Cet espace réservé ne sera jamais réduit tant que le programme ne sera pas sorti de la fonction main() et de ses sous-fonctions (sauf à bidouiller esp ou ebp avec de l'assembleur).
Donc, soit la taille que tu vois n'est pas la bonne, car la méthode pour voir cette taille est imparfaite, soit d'autres données viennent se mettre à partir du sixième élément du tableau de manière inopinée (fuite/débordement mémoire), faisant croire que le tableau s'est rétréci à 5 élements.