Recherche…


Introduction

Le compilateur GNU C est livré avec des fonctionnalités intéressantes qui ne sont pas spécifiées par les normes C. Ces extensions sont largement utilisées dans les logiciels système et constituent un excellent outil d’optimisation des performances.

Attribut emballé

emballé est un attribut de variable utilisé avec les structures et les unions afin de minimiser les besoins en mémoire.

#include <stdio.h>
struct foo {
    int a;
    char c;
};

struct __attribute__((__packed__))foo_packed {
    int a;
    char c;
};

int main()
{
    printf("Size of foo: %d\n", sizeof(struct foo));
    printf("Size of packed foo: %d\n", sizeof(struct foo_packed));
    return 0;
}

Sur mon Linux 64 bits,

  • Taille de struct foo = 8 octets
  • Taille de la structure foo_packed = 5 octets

L' attribut packed restreint le remplissage de la structure que le compilateur effectue pour maintenir l'alignement de la mémoire.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow