Bonjour,
Lors de l'exécution de mon programme, les valeurs d'un de mes tableaux sont modifiées involontairement au moment où les valeurs d'un autre tableau sont modifiées.
Lorsque j'affiche les adresses des éléments de ces deux tableaux, je m'aperçois que plusieurs d'entre elles sont identiques. D'où le conflit.
Le premier tableau est défini dans mon main.c ainsi:
Le second tableau appartient à la structure suivante déclarée dans un .h
Code : Sélectionner tout - Visualiser dans une fenêtre à part REEL *caraelemress;
Si j'affiche les adresses de ces deux tableaux avec les lignes suivantes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 typedef struct elements_ { INT * numelt; INT * pconnect; /* liste des pointeurs sur la connectivite des elements dans 'connectivite' }ELEMENTS;
NB: "p1" est un pointeur qui a pris pour valeur "elements.pconnect"
"nb_elt" est la dimension de pconnect
et,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 for (i=0;i<nb_elt+1;i++){ printf("p1[%d] = %d \t à l'adresse %d \n",i,p1[i],&p1[i]); }
je récupère dans mon terminal respectivement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part for(i=0;i<14;i++)printf("&caraelemress[%d] = %f\t à l'adresse %d \n",i,caraelemress[i],&(caraelemress[i]));
et,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 p1[0] = 1 à l'adresse 235837680 p1[1] = 9 à l'adresse 235837684 p1[2] = 17 à l'adresse 235837688 p1[3] = 19 à l'adresse 235837692 p1[4] = 21 à l'adresse 235837696 p1[5] = 23 à l'adresse 235837700 p1[6] = 25 à l'adresse 235837704
Entre autres, p1[2] et caraelemress[7] ont la même adresse.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 &caraelemress[0] = 210000.000000 à l'adresse 235837632 &caraelemress[1] = 0.000000 à l'adresse 235837640 &caraelemress[2] = 0.000000 à l'adresse 235837648 &caraelemress[3] = 0.000000 à l'adresse 235837656 &caraelemress[4] = 0.000000 à l'adresse 235837664 &caraelemress[5] = 0.000000 à l'adresse 235837672 &caraelemress[6] = 0.000000 à l'adresse 235837680 &caraelemress[7] = 0.000000 à l'adresse 235837688 &caraelemress[8] = 0.000000 à l'adresse 235837696 &caraelemress[9] = 0.000000 à l'adresse 235837704 &caraelemress[10] = 0.000000 à l'adresse 235837712 &caraelemress[11] = 0.000000 à l'adresse 235837720 &caraelemress[12] = 0.000000 à l'adresse 235837728 &caraelemress[13] = 0.000000 à l'adresse 235837736
Avez-vous une idée d'où cette erreur peut venir ?
Merci d'avance
Anthony
Partager