On 09 Dec 2010, at 22:33, Luis Fernando Del Aguila Mejía wrote:

> I can not understand the data alignment of records.
> I compiled the program PackRecordsDemo, 
> http://www.freepascal.org/docs-html/ref/refsu16.html#x40-470003.3.2 sample 
> documentation.
> But the result on my computer is different:
> 
> Size Trec1 : 4 Offset B : 2
> Size Trec2 : 3 Offset B : 1
> Size Trec3 : 2 Offset B : 1
> Size Trec4 : 2 Offset B : 1
> Size Trec5 : 5 Offset B : 1 Offset C : 4   //diferent
> Size Trec6 : 5 Offset B : 1 Offset C : 4  //diferent
> Size Trec7 : 9 Offset B : 1 Offset C : 8  //diferent
> Size Trec8 : 9 Offset B : 1 Offset C : 8  //diferent

The output in the manual is wrong (and it should probably use ptrint rather 
than longint), and probably from a very old FPC version. The output you posted 
above is the expected output.

> Can someone explain to me, about the alignment of registration data and other 
> variables.

The alignment of an array is the same as the alignment of its element types, so 
for an array of byte that is 1 -> all of the array fields are aligned to 1 
byte. I don't know what you mean by "registration data".


Jonas
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to