Alignment Guarantees?
Ian Lance Taylor
iant@google.com
Mon Mar 5 20:38:00 GMT 2012
Jeffrey Walton <noloader@gmail.com> writes:
> Does C/C++ or GCC offer any alignment guarantees? I'm looking at some
> code for ARM that does not look quite right.
>
> void foo(__u8 my_arr[64])
> {
> ...
>
> for(int i = 0; i < 16; i++)
> (__u32*)my_arr[i] = ...
> }
>
> Casting a u8[] to something else has caused a lot of intermittent
> problems on Windows Mobile (ARM) in the past.
To address the code, there is no guarantee that a __u8 is aligned
correctly for a __u32 (assuming those types have their implied meaning).
And note that if __u8 is not "char", "signed char", or "unsigned char",
then this would be an aliasing violation.
Ian
More information about the Gcc-help
mailing list