Conflit d'adresse entre deux tableaux
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:
Code:
REEL *caraelemress;
Le second tableau appartient à la structure suivante déclarée dans un .h
Code:
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; |
Si j'affiche les adresses de ces deux tableaux avec les lignes suivantes:
NB: "p1" est un pointeur qui a pris pour valeur "elements.pconnect"
"nb_elt" est la dimension de pconnect
Code:
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]);
} |
et,
Code:
for(i=0;i<14;i++)printf("&caraelemress[%d] = %f\t à l'adresse %d \n",i,caraelemress[i],&(caraelemress[i]));
je récupère dans mon terminal respectivement:
Code:
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 |
et,
Code:
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 |
Entre autres, p1[2] et caraelemress[7] ont la même adresse.
Avez-vous une idée d'où cette erreur peut venir ?
Merci d'avance
Anthony