sizeof(Type)
总是被alignof(Type)
整除吗
这样该语句将始终为真? sizeof(Type) % alignof(Type) == 0
答案 0 :(得分:2)
标准草案:
[dcl.array] ...数组类型的对象包含连续分配的非空的N个T类型子对象的集合。
[expr.sizeof] ...应用于类时,结果是该类对象中的字节数,包括将此类对象放置在数组中所需的填充。
为了使数组的每个元素对齐,两个相邻元素之间的距离必须是对齐的倍数。 sizeof
定义为该距离。所以是的,sizeof(Type) % alignof(Type) == 0
对所有类类型都是正确的。
有趣的是,对于除窄字符类型以外的基本类型,sizeof
只是实现定义:
[expr.sizeof] ... sizeof的结果应用于任何其他基本类型(6.7.1) 是实现定义的。
也就是说,我从未见过这样的系统,即基本类型的大小不是其对齐方式的倍数。毕竟它们也必须对齐排列。