__alignof 运算符

Microsoft 专用

返回一个 size_t 类型的值,这是类型的对齐要求。

__alignof( 
   type  
)

备注

例如:

表达式

__alignof( char )

1

__alignof( short )

2

__alignof( int )

4

__alignof( __int64 )

8

__alignof( float )

4

__alignof( double )

8

__alignof( char* )

4

__alignof 值与基本类型的 sizeof 的值相同。 但是,请考虑该示例:

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

在该示例中,__alignof 值是结构中的最大元素的对齐要求。

同样,

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

__alignof(S) 等于 32。

__alignof 的用途之一是作为某个内存分配例程的参数。 例如,假定下面定义的结构 S,您可以调用名为 aligned_malloc 的内存分配例程以在特定对齐边界上分配内存。

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));

有关修改对齐方式的详细信息,请参阅:

请参见

参考

使用一元运算符的表达式

C++ 关键字