alignas() 对 sizeof() 的影响 - 强制性的?
alignas() effect on sizeof() - mandatory?
这个程序:
struct alignas(4) foo {};
int main() { return sizeof(foo); }
返回 4,GCC 10.1 和 clang 10.1,以及 ICC 19.0.1。
这让我想知道 -alignas()
是否必须以这种方式影响sizeof()
? 即增加超出结构最初大小的大小?或者 - 此更改只是实现的特权吗?
alignas(( 是否必须以这种方式影响 sizeof((? 即增加超出结构最初大小的大小?
是的。类的大小是根据该类型的数组的元素之间的距离定义的。数组的元素之间没有填充(类型内的填充除外,因此是大小的一部分(。如果大小小于对齐,则相邻数组元素将无法满足该对齐。
大小必须至少与对齐一样多,并且必须是对齐的倍数,并且对齐始终是 2 的幂。
相关文章:
- 变量可能尚未初始化[MIRA 2012规则9.1,强制性]
- 如何使我的 sizeof sum 结构与空参数包一起工作
- 同一对象的"sizeof"的不同答案
- 为什么数组大小信息可用于"sizeof"运算符和 delete[] 运算符,但在将数组作为参数传递到
- 为什么 sizeof 在 C++ 中给出不正确的字节数?
- sizeof(size_t) 可以小于 sizeof(int) 吗?
- 字符串数组上的 sizeof 运算符以 C++ 为单位给出不同的输出
- 为什么 sizeof(ar)/ sizeof(ar[0]) 在传递给函数时无法在向量上正常工作?
- MFC 中的窗口消息管理:添加基类调用是否是强制性的?
- 为什么 MSVC _count_of实现将 0 添加到 sizeof 的结果中?
- alignas() 对 sizeof() 的影响 - 强制性的?
- 在C++中,运算符 sizeof 返回什么数据类型?
- sizeof 函数如何在带和不带位字段的结构上工作?(填充)
- s.length 和 sizeof(a) 有什么区别?
- sizeof(enum) 可以不同于 sizeof(std::underlying_type<Enum>::
- 如何将数组传递给使用 sizeof 的函数?
- sizeof(size_t) 和 sizeof(ptrdiff_t) 什么时候会有所不同?
- " sizeof "操作员在编程中真的很重要吗,尤其是在构建大型应用程序时?
- 在QScopedPointer的实现中使用sizeof
- Sizeof返回的是指针大小,而不是数组大小.有其他方法可以找到尺寸吗