sizeof总是alignof的倍数吗
Will sizeof always be a multiple of alignof?
sizeof(Type)
总是可以被alignof(Type)
整除吗
这样这句话就永远是真的吗?sizeof(Type) % alignof(Type) == 0
是的,sizeof(Type) % alignof(Type) == 0
对于所有类类型都为true
标准草案说:
[dcl.array]…数组类型的对象包含一个连续分配的T类型的N个子对象的非空集合。
[expr.sizeof]…应用于类时,结果是该类的对象中的字节数,包括在数组中放置该类型对象所需的任何填充。
为了对齐数组中的每个元素,两个相邻元素之间的距离必须是对齐的倍数。CCD_ 5被定义为该距离。
有趣的是,对于窄字符类型以外的基本类型,sizeof
只是实现定义的:
〔expr.sizeof〕…sizeof的结果应用于任何其他基本类型(6.7.1)是实现定义的。
也就是说,我从未见过一个基本类型的大小不是其对齐的倍数的系统。毕竟,它们也必须在数组中对齐。
相关文章:
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- QueryWorkingSet总是返回false
- 无论条件是否为true,if总是在c++中执行
- C++A*算法并不总是在路径中具有目标节点
- 为什么(-1)%vector::size()总是返回0
- xmake总是报告:错误:无法获取cxx的程序,为什么
- 类型总是使用其大小存储在内存中吗
- 使用std::istream::peek()总是安全的吗
- OpenMP:并行更新数组总是需要减少数组吗
- 在我的代码中,获得最大的Pair Wise产品C++和输出并不总是正确的
- OpenGL 和 GLM 矩阵无法正确扩展,总是按比例缩小
- 对于C++,方括号中的标题必须总是在引号中的标题之上吗
- 此测试()中发生了什么意外过程?为什么总是覆盖 ch[0 1 2..]?
- 在函数范围内在堆栈上分配的数组在离开函数时是否总是被释放?
- 在线程之间拆分任务总是值得的吗?
- 为什么系统函数总是在C++中返回已转移的退出状态?
- 是否总是可以将使用递归编写的程序重写为不使用递归的程序C++,性能观点是什么?
- 为什么C++总是显示十六进制内存地址,而不仅仅是整数?
- sizeof总是alignof的倍数吗
- 对于所有对象类型 T,大小(T) >= alignof(T) 是否总是如此?