Bonjour
J'aurais besoin de quelque éclaircissement sur certaines informations que je vais énoncer ci-dessous.
j'ai remarqué que deux structures ayant les mêmes données, en strictement pas la même taille et cela me force à les réaligner.
Dans l'exemple plus en bas, la différence de taille est elle dû au fait que sizeof prend en compte l'espace physique de la structure & l'espace inutilisé qui pointe sur les types de la structure ? ou c'est juste autres choses et pourquoi ?
(Après compilation en remarque que la seconde structure de donnée prend plus d'espace mémoire)
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
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
29
30
31
32
33
34
35
36
37 #include <stdio.h> #include <stdlib.h> // Exemple 1 struct st_ExpA{ char tA[20]; char tB[10]; char tC[5]; long lA; long lB; }A; // Même structure Exemple 1 struct st_ExpB{ char tA[20]; long lA; char tB[10]; long lB; char tC[5]; }B; //Forçage d'alignement struct ts_Alig{ unsigned long pos_X: 16; unsigned long pos_Y: 16; }Al; //Programme principale de teste int main( void ){ printf( "Size A =\t%d\n", sizeof( A ) ); printf( "Size B =\t%d\n", sizeof( B ) ); return( 0 ); }.
Merci d'avance pour vos réponses et à bientôt









.
Répondre avec citation




, mais ceci dit la question était de savoir si sizeof prenait en compte l'alignement des espaces inutilisés avec le reste des données et il me semble que ça soit le cas, et je suis d'avis sur la déclaration décroissante des types pour un alignement correct.


Partager