Bonjour,
Je me pose une question depuis quelque temps à propos de la taille des objets. Je vous propose mon programme source ici:
Vous l'avez compris, ce programme sert à vérifier la taille occupée en mémoire par différentes instances de classes simples.
Code : 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
38
39
40
41
42
43
44
45
46 /* Début du source */ class carac { char c; }; class petit { short int p; }; class grand { long int g; }; class combi1 { char c; short int p; }; class combi2 { short int p; long int g; }; int main(int argc, char* argv[]) { carac ob1; petit ob2; grand ob3; combi1 ob4; combi2 ob5; cout<<sizeof(ob1)<<"\t"<<sizeof(ob2)<<"\t"; cout<<sizeof(ob3)<<"\t"<<sizeof(ob4)<<"\t"; cout<<sizeof(ob5); return 0; } /* Fin du source */
Le résultat est étonnant: autant les objets 1, 2 et 3 occupent une taille respective de 1, 2 et 4 octets, ce qui correspond bien à la taille des attributs qui les constituent, autant les objets 4 et 5 ne semblent pas suivre la même logique: j'attendais la valeur 3 pour l'objet 4 (1 octet pour le char + 2 pour le short), or sizeof renvoie la valeur 4. De même pour l'objet 5, on obtient une taille de 8 octets là où j'en attendait 6.
Je suppose que cela suit une certaine logique au niveau de la réservation mémoire, mais je n'en ai jamais entendu parler jusqu'ici. Est-ce que quelqu'un en saurait un peu plus et pourrait me fournir une explication?
Par avance merci.
Partager