devxlogo

The Memory Alignment of a Union

The Memory Alignment of a Union

In C and C++, a union is aligned according to the alignment requirements of its largest member. For example:

 union U{  char c;  short s;  int i;};

The union U has three members, each having a different size and alignment requirement. For instance, the member c occupies only a single byte and can be aligned on a byte boundary. The member i, on the other hand, occupies 4-bytes on a 32-bit architecture and can be located at a memory address that is evenly divisible by 4. Consequently, the compiler sees that every instance of U is located at a memory address that is evenly divisible by 4.

devx-admin

Share the Post: