Lorsque j'utilise printf pour savoir la taille de ma structure, Il me renvoit 56 ce qui corresponds à 4*14 , mon nombre de pointeurs de 4 bytes. Jusque la rien d'anormale
J'ai un pointeur pNextStruct que j'ai initialisé au début de ma structure :
struct sData * pNextStruct = NULL;
pNextStruct = pTop;
Mais voila le problem, quand j'essaye de parcourir les éléments de ma super structure, moi pointeur fait des pas trop grand :
pNextStruct++;
Il passe de 0x00343440 à 0x00343454 alors que pour moi il aurait du aller à 0x00343444.
Pour info voici la soustructure auquel les pointeurs de ma superStructure pointent.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 7 janv. 2009 à 18:37
Normal que passe de 0x00343440 à 0x00343454, donc 20 octets.
struct sData{
char * label;
char * value;
char frame[9];
}
c'est bien la taille de cette structure, le compilo l'ayant traduit correctement en:
struct sData{
char * label;
char * value;
char frame[12];
}
pour que tes pointeurs soient bien alignés sur 4.
KurpeusLondon
Messages postés11Date d'inscriptionlundi 5 janvier 2009StatutMembreDernière intervention12 janvier 2009 7 janv. 2009 à 19:01
Ca veut dire qu'il prends en compte la taille de l'objet pointé ? Ok pour ça, c'est bon a savoir
Pourquoi alors ma structure sTop qui ne comprends que des pointeurs non initialisés s'étant sur 54 bytes c'est a dire quelque part en mémoire des pointeurs de 4 bytes qui se suivent à la queue leu leu (tiens je sais pas comment on écrit ça :p ?!? ) et quand je lui demande de faire une opération sur un même pointeur il prend en compte la structure pointé ?
Ais je quelque chose a faire avec le malloc de ma super structure ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 7 janv. 2009 à 19:38
56 bytes, normal aussi : 14 * 4 = 56.
Ils sont tous bien alignés sur 4.
Initialisés ou non n'entre pour rien dans l'affaire, chaque pointeur de la structure a sa place réservée l'un derrière l'autre en mémoire, quelle que soit la valeur (adresse mémoire) qui s'y trouve.