3

alignof(T*)所有可能类型的值是否相同T?怎么样sizeof(T*)?请根据标准允许/指定的内容而不是不同编译器的当前情况来回答。

4

1 回答 1

3

该标准没有过多地说明指针的大小和对齐方式,因此它们不受语言的严格限制。

从一个有效指针到函数到另一个函数的转换保证产生原始值。因此,对于任何给定的指向函数类型的指针,必须有相同的最小数量的可表示的值是有效地址的最大数量,它为所有指向函数类型的指针的大小提供了下限。

对象类型之间的转换具有类似的保证,但是仅当原始指向的类型具有更严格或相等的对齐要求时才适用。因此,指向高度对齐类型的对象指针需要较少的可表示值。如果对齐足够高,那么理论上该类型可以更小。

在允许在指向 void 的指针和指向函数的指针之间进行转换的系统上(有条件地支持),指向函数的指针和指向 void 的指针的可表示值的最小数量必须相同。

但即便如此,某些指针类型可能会大于它需要的可表示值的数量。那些额外的位将必然是未使用的。这不会很实用。

于 2020-05-05T11:37:47.470 回答