[fpc-pascal] memory layout of arrays
lanceboyle at qwest.net
Thu Sep 14 11:20:23 CEST 2006
On Sep 14, 2006, at 2:00 AM, Marc Santhoff wrote:
> when using arrays in C the layout of arrays is sort of flat, since
> pointer arithmetics for accessing values works (e.g. "pointer += 4"
> 32 bit values).
> Is this the same for pascal/fpc? Do values of for example an integer
> array sit in memory at 4 Byte boundaries?
> I need to hand over arrays to a C library and have no influence on how
> access is done internally (still und investigation). Currently the
> C lib
> reads garbage from my array ...
FWIW, GPC arrays seem to be laid out exactly like those for C. I have
passed arrays to and from Ada by specifying "C conventions," so at
least with GPC things went well. I haven't tried this with FPC,
however. Beware of 2D arrays in C because there seems to be no
requirement in C that all of the data be allocated in contiguous
memory; the parts of the 2D array (most likely, rows) can in effect
be fragmented. I am told that some or most C compilers do allocate
the memory as one big chunk, however.
More information about the fpc-pascal