luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 1 nov. 2004 à 21:01
Je ne programme qu'en C++, mais je comprends pas bien. Par défaut, l'alignement est sur 8 octets il me semble, et non 8 bytes. Ceci dit, ca n'explique toujours pas la valeur de 36 puisqu'il semble peut probable que tu sois encore sous windows 3.11 :)
Le problème doit venir de la fonction sizeof() faudrait savoir précisémment comment elle fonctionne.
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 1 nov. 2004 à 21:10
La seule explication que j'ai, quand on regarde les définitions de sizeof(): retourne le nombre d'octet UTILISES. Je vois pas d'autre explication, sizeof néglige les octets de remplissage.
De plus quand on créer un struct composé de seulement 3 char, sizeof renvoi, 3 et non 8 tel que ca devrait l'etre.
Bon reste a créer un tableau de cette structure et d'analyser l'adresse de chaque élément du tableau pour voir si la taille d'un élément c'est 3 ou bien 8.
cosmobob
Messages postés700Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention27 janvier 20094 1 nov. 2004 à 23:24
salut,un char 8 bits 1 octet = 1 byte (byte et bit ne sont pas la meme chose, un byte etant un octet, cad 8 bits)
'De plus quand on créer un struct composé de seulement 3 char, sizeof renvoi, 3 et non 8 tel que ca devrait l'etre.'
-> du coup ca devrait plutot renvoyer 4.
c'est aussi la raison pour laquelle, dans ta premiere question, les structures devraient etre aligné sur 4 octets (et non 8), car ya des chances que ton processeur soit 32 bits (cad 4 octets). Les alignements sont effets du a la taille des registres du processeur.
ca explique que le sizeof de ta struct soit 36 (premier multiple de 4 supérieur a 35), et pas 40.
ta confusion est due au mot octet, en te disant que les structures devaient etre des multiple de 8 octets (alors que octet signifie simplement structure de 8 bits, un bit etant un 0 ou un 1).
l'alignement des structures se fait sur 32 bits ! (4 octets - la taille des registres de ton processeur - , jme repete :)