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
Partager