Mon exe plante sur la lecteur d'un case d'un tableau

vincent_time Messages postés 23 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 12 décembre 2008 - 12 déc. 2008 à 21:24
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 - 13 déc. 2008 à 13:37
salut,

j'ai un tableau de char nommé carte de 4x4 cases, ma fonction teste toutes les cases adjacentes à carte[y][x].
les 4 cases adjacents sont donc carte[y-1][x], carte[y+1][x], carte[y][x+1] et carte[y][x-1]
sauf que ma fonction est demande pour carte[0][0], quand ma fonction teste carte[-1][0] mon programme plante,  alors que quand elle teste carte[0][-1] case qui n'existe pas aussi, le programme fonctionne....

pourquoi mon programme plante t-il pour l'un et pas pour l'autre ???

merci

2 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
12 déc. 2008 à 22:13
Certainement parce qu'en ce cas tu lis une adresse mémoire accessible en lecture, mais comme c'est faux, inutile de perdre du temps sur un algo faux.

ciao...
BruNews, MVP VC++
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
13 déc. 2008 à 13:37
Salut,
Comme précisé par BruNews, inutile de perdre du temps pour savoir pourquoi ça plante dans un cas et pas dans l'autre. Tout dépend du code. Le premier index d'un tableau est toujours 0 et le dernier est le nombre d'éléments moins 1. La valeur -1 n'est pas valide quelque soit le cas. Cette valeur dépend du type da variable utilisée comme index du tableau. Si c'est un int alors elle correspondra à 0xFFFFFFFF qui vaut 4294967295, le plantage est assuré. Si c'est un short elle vaudra 65535 et il y'a grand risque de plantage car tout dépend de l'espace mémoire de l'exécutable. Si c'est un char elle vaudra 255. Le risque de plantage est moindre mais, comme pour le cas précédent, tout dépend de l'espace mémoire de l'exe.
0
Rejoignez-nous