Re: sizeof(struct ...)
- From
René Scharfe <rene.scharfe@lsrfire.ath.cx>
- Date
- Nov 23, 2006, 16:14 UTC
- Message-ID
- <4565C8F4.6000606@lsrfire.ath.cx>
- In-Reply-To
- <20061123155431.GD6581@harddisk-recovery.com>
Erik Mouw schrieb:
Show 20 quoted lines
> On Thu, Nov 23, 2006 at 04:45:09PM +0100, René Scharfe wrote:
>> Is there really a compiler that inserts padding between arrays of
>> unsigned chars?
>
> Yes, that compiler is called "gcc".
>
> #include <stdio.h>
>
> struct foo {
> unsigned char a[3];
> unsigned char b[3];
> };
>
> int main(void)
> {
> printf("%d\n", sizeof(struct foo));
> return 0;
> }
>
> On i386 that prints 6, on ARM it prints 8.Does it add 1 byte after a and and 1 after b or two after b? I suspect it's the latter case -- otherwise Gerrit's patch, which started this thread, wouldn't help solve his problem. Or the pad sizing follows complicated rules that I do not understand at the moment.
Time to look for an ARM emulator, it seems.
Thanks,