On Sep 14, 2006, at 2:00 AM, Marc Santhoff wrote:
Hi,
when using arrays in C the layout of arrays is sort of flat, since
pointer arithmetics for accessing values works (e.g. "pointer += 4"
for
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.
TIA,
Marc
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal