Memory alignment & padding
Në shqip: Rreshtimi i memories
ShpjegimiSQ
Procesori lexon më shpejt kur të dhënat fillojnë në adresa „të rrumbullakëta“ (shumëfisha të 4 ose 8). Prandaj kompajleri shton bajtë bosh (padding) brenda struct-eve — dhe sizeof i një struct-i mund të dalë më i madh se shuma e fushave.
EnglishEN
The processor reads faster when data starts at “round” addresses (multiples of 4 or 8). So the compiler adds empty bytes (padding) inside structs — and a struct's sizeof can turn out bigger than the sum of its fields.
Si ta mendosh
Si parkingu me vija: edhe një veturë e vogël zë një vend të tërë, që të gjitha të jenë në rresht.
Lexoje në anglisht
Like a car park with painted bays: even a small car takes a whole bay, so everything lines up.
Shembull kodic
struct S { char a; int b; };
printf("%zu\n", sizeof(struct S)); // 8, jo 5