Extirper information de la memoire
Bonjour j'ai des petit problème pour extirper les informations d'une mémoire que j'ai alloué et remplie de donnée ...
Voici ma fonction qui alloue et rempli ma memoire :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| // int | double | unsigned char| 15 char ...
void * createTrou(){
unsigned int nbBytes = sizeof(int) +sizeof(double) + sizeof(unsigned char)+ 15*sizeof(char);
char * pt = malloc(nbBytes);
int cpt = 0; // permettra le decalage de mon pointeur
*(pt+cpt) = 9;
cpt +=sizeof(int);
*(pt+cpt) = 5.1;
cpt += sizeof(double);
*(pt+cpt) = 15;
cpt+= sizeof(unsigned char);
for(int j = 0;j<15;j++){
*(pt+cpt+j) = 61+j;
}
return pt;
} |
et ceci me permet de parcourir pour afficher :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| unsigned int affichParcours(void * pt, unsigned decalage){
int k = 0,cpt = 0;
double d = 0;
unsigned char c = 0;
char tmp = 0;
char * p = pt;
k = *(p+decalage+cpt);
cpt += sizeof(int);
d = *(p+decalage+cpt);
cpt += sizeof(double);
c = *(p+decalage+cpt);
cpt += sizeof(unsigned char);
printf("%d | %d | %c | "),k,d,c;
for(int i = 0;i<15;i++){
tmp = *(p+decalage+cpt+i);
cpt += sizeof(char);
printf("%c |",tmp);
}
printf("\n");
return cpt;
} |
Je n'arrive pas à comprendre pour quelle raison cela ne fonctionne pas ...
Note : dans la fonction unsigned int affichParcours(void * pt, unsigned decalage);
- le decalage est mit a 0 pour le 1er appel, cette fonction retourne le decalage fait apres avoir afficher tout ce qu'il falait.
- le void* pt est l'adresse de ma zone memoire alloue et remplit par ma fonction void * createTrou()
Merci pour les futur aide, conseil et corrections ^^