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 ?
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 );
}
(Après compilation en remarque que la seconde structure de donnée prend plus d'espace mémoire).
Merci d'avance pour vos réponses et à bientôt