Nel seguente codice Pascal i due record sembrano uguali ma le loro dimensioni risultano diverse...
program Test;
{$APPTYPE Console}
type
StrutturaNonOttimizzata = record
b1: Byte;
i1: Integer;
b2: Byte;
i2: Integer;
b3: Byte;
end;
{
Struttura non ottimizzata:
|b1 * * *| |i1| |b2 * * *| |i2| |b3 * * *|
5 x 4 (allineamento a 32 bit = 4 byte) = 20
* = bytes sprecati
}
type
StrutturaOttimizzata = record
b1, b2, b3: Byte;
i1, i2: Integer;
end;
{
Struttura ottimizzata:
|b1 b2 b3 *| |i1| |i2|
3 x 4 = 12
* = bytes sprecati (in questo caso solo uno!)
}
begin
Writeln('Dimensione struttura NON ottimizzata: ', SizeOf(StrutturaNonOttimizzata));
Writeln('--------------------------------------');
Writeln('Dimensione struttura ottimizzata: ', SizeOf(StrutturaOttimizzata));
Readln; // Premi il tasto INVIO per terminare...
end.
Click here - Clicca quiOutput: Dimensione struttura NON ottimizzata: 20 -------------------------------------- Dimensione struttura ottimizzata: 12