Data elements of a structure are stored in memory on an address boundary specific for that data type. For example, a double value is stored in memory on a doubleword (8-byte) boundary. Gaps may be left in memory between elements of a structure to align elements on their natural boundaries. You can reduce the padding of bytes within a structure by using the _Packed qualifier on the structure declaration.
C++ does not support the _Packed qualifier. To change the alignment of structures, use the #pragma pack directive or the
compiler option. Both of these methods are also supported by C.