C++:alignof 运算符
简介
alignof 运算符将指定类型的对齐方式返回为类型的值 size_t 。
语法
alignof( type )
备注
例如:

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));
Microsoft 专用
alignof 和 __alignof 是 Microsoft 编译器中的同义词。 在 c + + 11 中成为标准的一部分之前,特定于 Microsoft 的 __alignof 操作员提供此功能。 为了获得最大的可移植性,应使用 alignof 运算符而不是特定于 Microsoft 的 __alignof 运算符。
为了与早期版本兼容, _alignof 将作为同义词, __alignof 除非指定了编译器选项 " /Za ( 禁用语言扩展") 。
该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处,本文章博客地址:https://blog.youkuaiyun.com/it_cplusplus/article/details/118501313
本文介绍了C++中的alignof运算符,用于获取类型对齐方式的size_t值。alignof与sizeof对基本类型有相同效果,但在结构体中会返回最大元素的对齐要求。此外,文章还提到了在Microsoft编译器中alignof和__alignof的使用区别,建议使用alignof以提高代码可移植性。
113

被折叠的 条评论
为什么被折叠?



