Structuuropvulling is de toevoeging van extra bytes aan een datastructuur om ervoor te zorgen dat deze aan bepaalde uitlijningsvereisten voldoet. Dit wordt gedaan om de prestaties van bepaalde bewerkingen te verbeteren, zoals geheugentoegang en drijvende-kommaberekeningen.
De uitlijning van een datastructuur verwijst naar de positie van de leden ervan in het geheugen. Sommige processors vereisen dat gegevens worden uitgelijnd op bepaalde grenzen, zoals grenzen van 4 bytes of 8 bytes. Als een datastructuur niet goed is uitgelijnd, moet de processor mogelijk extra werk verrichten om toegang te krijgen tot de leden, wat de prestaties kan vertragen.
Structuuropvulling kan worden gebruikt om ervoor te zorgen dat een gegevensstructuur voldoet aan de uitlijningsvereisten van de doelprocessor. Neem bijvoorbeeld de volgende structuur:
```
struct Punt {
int x;
int y;
};
```
Op een 32-bits processor is deze structuur 8 bytes lang, waarbij het `x`-lid begint bij geheugenadres 0 en het `y`-lid begint bij geheugenadres 4. Als de processor echter uitlijning van 4 bytes vereist, wordt het ` y` lid zou eigenlijk beginnen op geheugenadres 8, waardoor er een opening van 4 bytes overblijft tussen de twee leden. Deze opening staat bekend als opvulling .
Structuuropvulling kan ook worden gebruikt om de prestaties van drijvende-kommaberekeningen te verbeteren. Sommige processors gebruiken speciale instructies voor drijvende-kommabewerkingen waarbij de operanden op bepaalde grenzen moeten worden uitgelijnd. Door opvulling aan een gegevensstructuur toe te voegen, kunt u ervoor zorgen dat de drijvende-kommaleden correct worden uitgelijnd, waardoor de prestaties van drijvende-kommaberekeningen kunnen worden verbeterd.
De hoeveelheid opvulling die nodig is voor een datastructuur hangt af van de doelprocessor en de uitlijningsvereisten van zijn leden. Sommige compilers bieden opties om automatisch opvulling aan structuren toe te voegen, of u kunt handmatig opvulling toevoegen door lege leden in de structuur in te voegen. |