Accueil > Forum > > > > Structure alignment
Structure alignment
lundi 1 novembre 2004 à 17:05:38 |
Structure alignment

Gargagol
|
Voilà je programme sous MS VC++ J'ai la structure suivante: typedef struct { unsigned short port; unsigned char showMessage; unsigned char hashMonitor[16]; unsigned char hashControl[16]; } tConfigServer; ce qui fait un total de 35 octets. Lorsque j'affiche le sizeof de ma struct, il affiche 36. En mettant le structure member alignment sur 1 byte, il affiche le nombre correct 35, jusque là j'ai compris. Mais ce que je ne comprends pas, c'est que par défaut, l'option est sur 8bytes. Alors pourquoi est ce que ma struct fait 36octets et pas 40octets qui est le premier multiple de 8 supérieur à 35???
|
|
lundi 1 novembre 2004 à 21:01:08 |
Re : Structure alignment

luhtor
|
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.
|
|
lundi 1 novembre 2004 à 21:08:35 |
Re : Structure alignment

Gargagol
|
euh les octets et les bytes c'est la même chose! 8 bits = 1 byte = 1 octet
|
|
lundi 1 novembre 2004 à 21:10:40 |
Re : Structure alignment

luhtor
|
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.
|
|
lundi 1 novembre 2004 à 21:15:41 |
Re : Structure alignment

luhtor
|
Ah pour moi byte était égal à bit :) encore que maintenant que tu me le dis :)
Je viens de faire le test avec un tableau, je comprend pas...
|
|
lundi 1 novembre 2004 à 23:24:02 |
Re : Structure alignment

cosmobob
|
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 :)
a++ ;)
|
|
Cette discussion est classée dans : char, structure, unsigned, struct, alignment
Répondre à ce message
Sujets en rapport avec ce message
struct [ par ready4 ]
Je ne sais pas comment initialiser mes moteurs //intialisation moteursM1 = {2, 1, 1, 2, 0, 0, 120};M2 = {8, 4, 4, 8, 0, 0, 80};M3 = {32, 16, 16, 32, 0
envoi de paquet ip [ par sendouda ]
Bonjour;j'ai écrit un programme qui permet d'envoyer des paquets ip à une destination.mais quand j'ai voulu le sniffer j'ai pas pu le capter.J'ai beso
urgent:envoi paquet [ par sendouda ]
Bonjour;j'ai écrit un programme qui permet d'envoyer des paquets ip à une destination.mais quand j'ai voulu le sniffer j'ai pas pu le capter.J'ai beso
structure [ par logant83 ]
bonjoir, enfaite voila j'aimerai pouvoir exploiter une structure mais voila j'i arrive pas. struct connect_nick { //ma structure char pseudo[1000
structures imbriquées [ par draluorg ]
Salut a tous,Je recontre un probleme en creant des structures imbriquées :(Voici un exemple type de mes structures:typedef struct _SUB_SUB_SUB_STRUCTU
erreur : Invalid struct or union type [ par Nico_35136 ]
Bonjour, Voila , en ce moment je m'arrache les cheveux sur une allocation dynamique d'une structure en mémoire. Voici mes variable et structure que
taille des types... [ par li ]
Bonjours a tous. Voila ma question, j'ai une structure : struct header { unsigned char useless1: 1; unsigned char type : 1; unsigned short dat
Taille variables dans une class/struct [ par LA_Tupac ]
Salut à tous. Je me penche sur la taille des données car je fais des écritures binaires d'objets à taille variable dans des fichiers. En faisant des t
Filtre de sobel [ par dwarfo ]
Bonjour, je cherche à appliquer un filtre de sobel sur une image bitmap 8 bits mais sans librairies. J'ai vu qu'il existait de nombreux code mais so
comment lire et ecrire un tableau de structure sur un fichier en C [ par DBA2010 ]
salut à tout le monde, je suis entrain de faire un programme de gestion des étudiants,et je suis besoin de savoir comment faire pour lire et écrire u
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|