Portability questions (Arrays)_(re)
Thu, 8 May 1997 02:10:58 +0200
Now, after Peter's and Berend's answers I'm a bit confused...
Could someone clear things up for me, please?
Note, I'm talking about gpc, not about other compilers or about the standard.
Peter Gerwinski wrote:
> Why is this so, e.g. with an array of something which has 3 bytes?
>
>
> Program Test;
>
> Type
> r = packed record
> x: ShortWord;
> y: Byte;
> end (* r *);
>
> Var
> x: packed array [ 1..1000 ] of r;
>
> begin
> writeln ( SizeOf ( x ) );
> writeln ( SizeOf ( x [ 1 ] ) );
> end.
>
>
> The output is 4000 and ... 4. To avoid alignment problems in an "array
> of r", the record `r' has size 4, not 3.
BTW: Does this mean if you have
var
a:r;
b:byte;
then 1 byte after a will be "wasted" though b could fit into it? It has to be
so if sizeof(a)=4, if someone does "move(...,a,sizeof(a))".
--
Frank Heckenbach, Erlangen, Germany
heckenb@mi.uni-erlangen.de
Turbo Pascal: http://www.mi.uni-erlangen.de/~heckenb/programs.htm
Internet links: http://www.mi.uni-erlangen.de/~heckenb/links.htm
Frank Heckenbach (heckenb@mi.uni-erlangen.de)
HTML conversion by Lluís de Yzaguirre i Maura
Institut de Lingüística Aplicada -
Universitat "Pompeu Fabra"
e-mail: de_yza@upf.es