http://msdn.microsoft.com/en-us/library/45t0s5f4%28VS.71%29.aspx
__alignof Operator
Visual Studio .NET 2003
Microsoft Specific
Returns a value, of type size_t, that is the alignment requirement of the type.For example:
Expression | Value |
---|---|
__alignof( char ) | 1 |
__alignof( short ) | 2 |
__alignof( int ) | 4 |
__alignof( __int64 ) | 8 |
__alignof( float ) | 4 |
__alignof( double ) | 8 |
__alignof( char* ) | 4 |
The __alignof value is the same as the value for sizeof for basic types. Consider, however, this example:
In this case, the __alignof value is the alignment requirement of the largest element in the structure.
Similarly, for__alignof(S)
is equal to 32
.One use for __alignof would be as a parameter to one of your own memory-allocation routines. 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));
END Microsoft Specific