Bonjour,
j'ai rencontr� un probl�me de fonctionnement de mon programme assez vicieux:
il arrivait qu'il me d�clenche une exception du genre "Le programme essai de lire des adresses m�moire auquel il n'a pas droit d'acc�der..."
( Enfin c'est une traduction de l'id�e du message d'erreur).
Ou alors, j'avais des variables dont les donn�es �taient sabot�es al�atoirement au cours des calculs...
Apr�s avoir pass� plusieurs jours � essayer de localiser la portion de programme en faute, j'ai trouv� ceci:
Or il se trouve que les variables d�part et arrivee sont cod�es sur 1 octet sign�.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 for( depart = memo + 1, arrivee = indice + 1; depart <= indice; depart++, arrivee++ ) Liste_gdc[depart] = Liste_gdc[arrivee];
Alors que memo et indice sont des entiers sur 4 octets.
Ainsi il arrivait parfois que memo + 1 ou indice + 1 d�passent la valeur fatidique de 128, le maximum possible pour une variable de type octet sign�.
Du coup, l'acc�s au tableau Liste_gdc[indice compl�tement impr�visible], occasionnait des cafouillage m�moire.
Je suis �tonn� de ne pas avoir �t� avertit par le compilateur que l'affectationpouvait occasionner un dysfonctionnement. D'habitude, il signale quand les conversions de type sont hasardeuse, mais l� ... rien
Code : S�lectionner tout - Visualiser dans une fen�tre � part depart = memo + 1, arrive = indice + 1
Y a-t-il une option � activer, ou une solution envisageable pour que ce genre de probl�me �reintant soit �viter ?
Partager