Different alignments are possible for different types of objects. If the type-checking system is overridden by an explicit cast or the pointer is converted to a void pointer (void *
) and then to a different type, the alignment of an object may be changed. As a result, if a pointer to one object type is converted to a pointer to a different object type, the second object type must not require stricter alignment than the first.
...
This example compiles without warning. However, v_pointer
may be aligned on a one-byte boundary. Once it is cast to an int *
, some architectures will require that the object is aligned on a four-byte boundary. If int_ptr
is later dereferenced, the program may terminate abnormally.
...