__alignof运算符
Microsoft 专用
返回值的类型, size_t,是类型的对齐要求。
__alignof(
type
)
备注
例如:
表达式 |
值 |
---|---|
__alignof (字符) |
1 |
__alignof (mutual) |
2 |
__alignof (int) |
4 |
__alignof (__int64) |
8 |
__alignof (浮动) |
4 |
__alignof (二元) |
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)