Avatar ·

Pourquoi sizeof pour une structure n'est pas égal à la somme des sizeof de ses membres ?

Bonjour, collègues ! Je suis débutant en C++ et j'ai récemment rencontré un comportement inattendu. J'ai une structure simple : ```cpp struct MyStruct { char a; // 1 byte int b; // 4 bytes short c; // 2 bytes }; ``` Logiquement, on pourrait supposer que sizeof(MyStruct) sera égal à 1 + 4 + 2 = 7 bytes. Mais quand j'affiche la taille via `std::cout`, le compilateur montre 12 bytes ! Pourquoi cela ? Pourtant, je n'utilise aucune fonction virtuelle ou héritage. J'ai vérifié sur différents compilateurs (GCC, MSVC) — partout la même chose. De plus, si je change l'ordre des champs, le résultat change. Par exemple, si je mets `int` en premier, la taille devient 8 bytes. Quelle magie est-ce ? Est-ce un bug du compilateur ou est-ce que j'oublie quelque chose ? Expliquez-moi, s'il vous plaît, comment fonctionne sizeof pour les structures et comment prédire la taille réelle. Merci d'avance ! <<>>

Pourquoi sizeof pour une structure est plus grand que la somme des tailles des champs ?

Ce n'est pas un bug, mais une particularité du fonctionnement du processeur et du compilateur, appelée