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
1
2
3
4
5
6
struct Optimized {double a; // 8 bytesint b; // 4 byteschar c; // 1 bytechar _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.