Strukturpolstring er tillegg av ekstra byte til en datastruktur for å sikre at den oppfyller visse justeringskrav. Dette gjøres for å forbedre ytelsen til visse operasjoner, for eksempel minnetilgang og flyttallsberegninger.
Justeringen av en datastruktur refererer til plasseringen av dens medlemmer i minnet. Noen prosessorer krever at data er justert på visse grenser, for eksempel 4-byte eller 8-byte grenser. Hvis en datastruktur ikke er riktig justert, kan det hende at prosessoren må utføre ekstra arbeid for å få tilgang til medlemmene, noe som kan redusere ytelsen.
Strukturpolstring kan brukes for å sikre at en datastruktur oppfyller målprosessorens innrettingskrav. Tenk for eksempel på følgende struktur:
```
struct Point {
int x;
int y;
};
```
På en 32-bits prosessor er denne strukturen 8 byte lang, med `x`-medlemmet som starter ved minneadresse 0 og `y`-medlemmet starter ved minneadresse 4. Imidlertid, hvis prosessoren krever 4-byte-justering, vil `` y`-medlemmet vil faktisk starte på minneadresse 8, og etterlate et 4-byte gap mellom de to medlemmene. Dette gapet er kjent som polstring .
Strukturpolstring kan også brukes til å forbedre ytelsen til flytepunktberegninger. Noen prosessorer bruker spesielle instruksjoner for flyttalloperasjoner som krever at operandene er justert på visse grenser. Ved å legge til polstring i en datastruktur kan du sikre at dens flyttallselementer er riktig justert, noe som kan forbedre ytelsen til flyttallsberegninger.
Mengden utfylling som kreves for en datastruktur avhenger av målprosessoren og innrettingskravene til dens medlemmer. Noen kompilatorer gir alternativer for automatisk å legge til utfylling til strukturer, eller du kan legge til utfylling manuelt ved å sette inn tomme medlemmer i strukturen.