alignof(char)== 1?

blu*_*rni 7 c++11

sizeof(char)总是1,在我看来,类型的对齐要求永远不会大于它的大小.引用即将推出的C++ 11标准(3.11):

对齐是一个实现定义的整数值,表示可以分配给定对象的连续地址之间的字节数.

因此,如果类型的对齐大于其大小,则无法在连续元素之间创建没有空白空间的数组.

这种解释是否正确,因此始终是alignof(char)== 1?

cur*_*guy 1

你是对的。

您可以从C++ 数组的“紧凑”(无填充)布局推断出,可以定义此类型数组的任何对象类型都必须具有为其大小除数的对齐方式。

特别是,这种大小为1的类型的对齐方式必须为1。

特别地,charsigned char、 和的对齐方式unsigned char为 1。

OTOH,您无法推断出有关抽象类与此参数的对齐的任何信息。