alignof operator (since C++11)

From cppreference.com
< cpp‎ | language

Queries alignment requirements of a type

Contents

[edit] Syntax

alignof( type-id )

Returns a value of type std::size_t.

[edit] Explanation

Returns the alignment, in bytes, required for any instance of the type indicated by type-id, which is either complete type, an array type, or a reference type.

If the type is reference type, the operator returns the alignment of referenced type; if the type is array type, alignment requirement of the element type is returned.

The types char, signed char, and unsigned char have the weakest (smallest) alignment supported by the implementation.

[edit] Keywords

alignof

[edit] Example

#include <iostream>
 
struct Empty {};
 
struct Foo {
     int f2;
     float f1;
     char c;
};
 
int main()
{
    std::cout << "alignment of empty class: " << alignof(Empty) << '\n'
              << "alignment of pointer : "    << alignof(int*)  << '\n'
              << "alignment of char : "       << alignof(char)  << '\n'
              << "alignment of Foo : "        << alignof(Foo)   << '\n' ;
}

Output:

alignment of empty class: 1
alignment of pointer : 8
alignment of char : 1
alignment of Foo : 4

[edit] See also

alignment requirement restricts the addresses at which an object may be allocated
alignas specifier specifies that the storage for the variable should be aligned by specific amount (C++11)
(C++11)
obtains the type's alignment requirements
(class template)