Bonjour,
J'ai une fonction read qui prend comme paramètre buffer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
int read (void * buffer[]);
Dans celle-ci, un appel de read_words a lieu :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
read_words((unsigned short*)buffer, adresse)
Dans celle-ci, j'ai une copie qui s'effectue à partir d'une adresse et mon espace mémoire à partir de l'adresse de buffer devient:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
00430BC4  CDCD  CDCD  CDCD  CDCD  CDCD  CDCD  CDCD  
00430BD2  CDCD  CDCD  CDCD  CDCD  CDCD  CDCD  CDCD  
00430BE0  CDCD  CDCD  CDCD  CDCD  CDCD  CDCD  CDCD
Ce qui est ok (21 mots de 2 octets)
Dans read, j'affiche le buffer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
for(i = 0;i<nbWord;i++) //nbWord = 21 pour nombre de mots (2 octets/mot)
printf("0x%04X\t",(unsigned short)buffer[i]);
L'affichage n'est pas correct :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
0xCDCD  0xCDCD  0xCDCD  0xCDCD  0xCDCD  0xCDCD  0xCDCD  0xCDCD
0xCDCD  0xCDCD  0xCDCD  0x0000  0x0000  0x0000  0x0000  0x0000
0x0000  0x0000  0x0000  0x0000  0x0000
En fait, j'ai l'impression que l'on ne voit que la moitié de chaque mot long (4 octets) et donc seulement 11 mots.
Comment afficher correctement les 21 mots ?
Merci

EDIT : peut-être ne peut-on pas accéder à 1 ou 2 octets de la mémoire ? L'accès se fait-il seulement par paquet de 4 ?