Bonjour,
J'ai une fonction read qui prend comme paramètre buffer :
int read (void * buffer[]);
Dans celle-ci, un appel de read_words a lieu :
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:
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 :
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 :
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 ?
Partager