EMBEDDED TOOLKIT

SYSTEMS R&D // DEV_TOOLS SUITE

Narzędzia (65)

struct padding memory layout

SYSTEM ONLINE

Definicja Struktury (C/C++)

Układ Pamięci (Memory Layout)

sizeof(struct) = 12 bajtów
+0
id (char)
1 b
+1
PADDING
3 b
+4
temperature (int)
4 b
+8
humidity (short)
2 b
+10
status (char)
1 b
+11
TRAILING PADDING
1 b

📖 Struct Padding & Alignment

Kompilatory C/C++ dodają puste bajty (padding) między polami struktury, aby wyrównać je w pamięci do granic wielokrotności słowa maszyny (np. 4 bajty w ARM 32-bit). Zwiększa to prędkość odczytu sprzętowego kosztem marnowania pamięci RAM.

  • Padding: Marnuje pamięć. Aby go zmniejszyć, grupuj typy od największego do najmniejszego (np. pointery/long -> int -> short -> char).
  • #pragma pack(1): Wymusza brak paddingu. Idealne, gdy kopiujesz strukturę prosto przez UART lub uDPA. Uwaga: W architekturach ARM (np. Cortex-M0) nienaturalny dostęp (Unaligned Access) może wywołać HardFault!