How to Calculate the Alignment in C++

How to Calculate the Alignment in C++

Use the following class to help calculate the alignment in C++:

template<typename T>class Alignment{    struct Align     {        char align;        T t;    };public:    int alignment()    {         return sizeof(Align) - sizeof(T);    }};

Below are two examples that use the Alignment class. The first one is for the char data type; the second one is for the iostream class from the standard Input/Output streams library:

   Alignment char_type;   std::cout 

The alignment requirement for a data object is hardware- and compiler-specific parameter. Even on the same machine and with the same compiler, the alignment for the same type can be different depending on compiler-specific options. For example, the following compiler command:

   #pragma pack(2)

will result in many compilers to use at most two-byte alignment for the data that follow the directive (please note that pragma directives cannot increase alignment for a data object).


Share the Post: