"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment l’alignement de la mémoire affecte-t-il la taille des structures C ?

Comment l’alignement de la mémoire affecte-t-il la taille des structures C ?

Publié le 2024-11-07
Parcourir:881

How Does Memory Alignment Affect the Size of C Structures?

Alignement de la mémoire dans les structures C

Lorsque vous travaillez avec des structures C, il est crucial de comprendre l'alignement de la mémoire. L'alignement de la mémoire fait référence au placement des données en mémoire à des limites spécifiques. Sur une machine 32 bits, la mémoire est généralement alignée sur des limites de 4 octets.

Alignement de la mémoire pour les structures

Considérez la structure suivante :

typedef struct {
    unsigned short v1;
    unsigned short v2;
    unsigned short v3;
} myStruct;

Chaque short non signé occupe 2 octets. En théorie, la taille de myStruct devrait être de 2 * 3 = 6 octets. Cependant, l'alignement de la mémoire peut affecter la taille réelle.

Dans ce cas, myStruct est aligné sur une limite de 2 octets puisque le plus grand membre de données est court non signé, soit 2 octets. Par conséquent, aucun remplissage n'est nécessaire entre les membres et la taille de myStruct reste de 6 octets.

Remplissage pour les structures

Considérez maintenant cette structure modifiée :

typedef struct {
    unsigned short v1;
    unsigned short v2;
    unsigned short v3;
    int i;
} myStruct;

L'ajout d'un membre int modifie la taille et l'alignement de la structure. int est de 4 octets, donc l'alignement de myStruct est arrondi à 4 octets.

Pour aligner correctement, 2 octets de remplissage sont insérés entre v3 et i. Cela donne une taille totale de 6 2 4 = 12 octets pour myStruct.

Conclusion

L'alignement de la mémoire garantit que les données sont placées efficacement en mémoire. Les exigences d’alignement sont basées sur la taille du plus grand membre de données au sein de la structure. Comprendre ces principes est essentiel pour optimiser l'utilisation de la mémoire et maintenir l'efficacité du code.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3