Suche…


Einführung

Der GNU C-Compiler verfügt über einige coole Funktionen, die nicht in den C-Standards festgelegt sind. Diese Erweiterungen werden häufig in Systemsoftware verwendet und sind ein hervorragendes Werkzeug zur Leistungsoptimierung.

Attribut gepackt

Gepackt ist ein variables Attribut, das bei Strukturen und Vereinigungen verwendet wird, um den Speicherbedarf zu minimieren.

#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;
}

Auf meinem 64-Bit-Linux

  • Größe von struct foo = 8 Bytes
  • Größe der Struktur foo_packed = 5 Byte

Gepacktes Attribut drosselt die Strukturauffüllung , die der Compiler zur Aufrechterhaltung der Speicherausrichtung durchführt.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow