capypad
0 Tage Serie
c / expert
Snippet

Speicherausrichtung und Struct-Padding

CPUs greifen oft in Multi-Byte-Blöcken (Word-Größe) auf den Speicher zu. Um den Zugriff zu optimieren, richten Compiler Struktur-Member an spezifischen Grenzen aus. Dies führt zu 'Padding' – verschwendetem Platz zwischen Membern. Experten ordnen Struktur-Member von der größten zur kleinsten Ausrichtungsanforderung an, um den Speicherbedarf zu minimieren und die Cache-Effizienz zu steigern.

snippet.c
c
1
2
3
4
5
6
struct Optimized {
double a; // 8 bytes
int b; // 4 bytes
char c; // 1 byte
char _pad[3]; // 3 bytes implicit padding
}; // Total 16 bytes
Erklärung
1
double a;
Erfordert auf den meisten 64-Bit-Systemen eine 8-Byte-Ausrichtung.
2
char _pad[3];
Implizite Bytes, um sicherzustellen, dass die Gesamtgröße ein Vielfaches der größten Ausrichtung ist.