Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: C++
Expertise: Intermediate
Jul 15, 2008

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> char_type;
   std::cout << char_type.alignment() << std::endl;
   Alignment<iostream&g;t iostream_class;
   std::cout << iostream_class.alignment() << std::endl;
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).

Alexander Ocher
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap