__alignof 演算子__alignof Operator

C++ 11 で、 alignof演算子を指定した型のバイト単位で、配置を返します。C++11 introduces the alignof operator that returns the alignment, in bytes, of the specified type. 移植性を最大にするため、Microsoft 固有の __alignof 演算子ではなく、alignof 演算子を使用してください。For maximum portability, you should use the alignof operator instead of the Microsoft-specific __alignof operator.

Microsoft 固有の仕様Microsoft Specific

型の値を返しますsize_t型のアラインメント要件であります。Returns a value of type size_t that is the alignment requirement of the type.

構文Syntax

  __alignof( type )

RemarksRemarks

例:For example:

正規表現Expression [値]Value
__alignof( char )__alignof( char ) 11
__alignof( short )__alignof( short ) 22
__alignof( int )__alignof( int ) 44
__alignof( __int64 )__alignof( __int64 ) 88
__alignof( float )__alignof( float ) 44
__alignof( double )__alignof( double ) 88
__alignof( char* )__alignof( char* ) 44

_ _Alignof値は、の値として同じsizeofの基本型。The __alignof value is the same as the value for sizeof for basic types. ただし、次の例を検討します。Consider, however, this example:

typedef struct { int a; double b; } S;
// __alignof(S) == 8

ここで、 _ _alignof値は、構造内の最大の要素のアラインメント要件。In this case, the __alignof value is the alignment requirement of the largest element in the structure.

同様に、Similarly, for

typedef __declspec(align(32)) struct { int a; } S;

__alignof(S)32 が等価です。__alignof(S) is equal to 32.

用途の 1 つ _ _alignof独自のメモリ割り当てルーチンのいずれかのパラメーターとしてになります。One use for __alignof would be as a parameter to one of your own memory-allocation routines. たとえば、次の定義済みの構造体 S を指定して、aligned_malloc という名前のメモリ割り当てルーチンを呼び出し、特定の配置境界にメモリを割り当てることができます。For example, given the following defined structure S, you could call a memory-allocation routine named aligned_malloc to allocate memory on a particular alignment boundary.

typedef __declspec(align(32)) struct { int a; double b; } S;
int n = 50; // array size
S* p = (S*)aligned_malloc(n * sizeof(S), __alignof(S));

以前のバージョンとの互換性のため _alignofのシノニムです _ _alignofしない限り、コンパイラ オプション/Za(言語拡張機能を無効にする)は指定します。For compatibility with previous versions, _alignof is a synonym for __alignof unless compiler option /Za (Disable language extensions) is specified.

配置の変更の詳細については、次を参照してください。For more information on modifying alignment, see:

x86 と x64 用のコード内の配置の違いの詳細については、For more information on differences in alignment in code for x86 and x64, see:

Microsoft 固有の仕様はここまでEND Microsoft Specific

関連項目See also

単項演算子を含む式Expressions with Unary Operators
キーワードKeywords