Potential changes in structure size and alignment
The LP64 specification changes the size and alignment of certain structure elements, which affects the size of the structure itself. In general, all structures that use long integers and pointers must be checked for size and alignment dependencies.
It is not possible to share a data structure between
32-bit and 64-bit processes, unless the structure is devoid of pointer
and long types. Unions that attempt to share long and int types (or
overlay pointers onto int types) will be aligned differently or will
be corrupted. For example, the virtual function table pointer, inherent
in many C++ objects, is a pointer and will change the size and alignment
of many C++ objects. In addition, the size and composition of the
compiler-generated virtual function table will change.
Note: The
issue of changing structure size and alignment should not be a problem
unless the program makes assumptions about the size and/or composition
of structures.