__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));
有关修改对齐方式的详细信息,请参阅:
结构对齐示例(特定于 x64)