[fpc-pascal] Record size
Jonas Maebe
jonas.maebe at elis.ugent.be
Tue May 24 16:06:15 CEST 2011
On 24 May 2011, at 15:54, Carsten Bager wrote:
> I have a data record ("sVar_typ") compiled with the 2.2.5 arm
> compiler. It has the size of
> 32728 byte.
> Now I try to compile with the 2.4.5 arm compiler it has the size of
> 32736 byte.
>
> I write the addresses of the variables in the record, they have not
> changed.
> It looks like the compiler just adds 8 byte to the record at the end.
> If I use "Packed" in the record, the 8 byte disappears.
> Because the record is used in a file, I have to know the size.
> Is this an indented behavior of the compiler?
The size of non-packed records can change at any time between compiler
releases. If you need a known layout, you must use a packed record.
Padding at the end of a record is generally added to make sure that if
such a record appears in an array, subsequent items all have the
required alignment. I don't immediately see why the compiler would
think that record needs alignment to a multiple of 16 bytes though
(afaik, we don't support any datatypes on the ARM that require such an
alignment).
Jonas
More information about the fpc-pascal
mailing list