描述对象指针类型的规则如下(3.7.4.3,N3797):
窄字符数组(3.9.1)中的元素序列, 其中序列的大小和对齐与某些序列的匹配 对象指针类型。
我认为序列的大小是序列中任何元素大小的总和。但是序列对齐的定义是什么?
3.11 / 1 N3797说:
对象类型具有对齐要求(3.9.1,3.9.2) 对该类型的对象可能的地址的限制 分配
序列是对象类型还是别的什么?
答案 0 :(得分:2)
“对齐”是对象起始地址的对齐方式。
例如,如果对齐为4,则起始地址必须是4的倍数。
基本上这是一个硬件问题,当地址是4的倍数时,访问4字节对象更有效(可以在一次操作中直接完成)。在许多平台上,未对齐访问被视为失败。在Windows中,对于“某些体系结构”,可以通过使用或不使用SetErrorMode
标志调用SEM_NOALIGNMENTFAULTEXCEPT
来指定行为。
关于标准引用的段落,在可能将字节序列视为对象指针的上下文中,它必须至少与对象指针一样严格对齐。
如果没有,那么序列不可能是对象指针的表示,因此不可能构成对某事物的逻辑引用(为了垃圾收集的目的)。