对于所有可能的类型T,alignof(T*)是否都是相同的值?那sizeof(T*)呢?请根据标准允许/指定的内容回答,而不是根据不同编译器中的当前情况回答。
发布于 2020-05-05 19:37:47
该标准对指针的大小和对齐没有太多说明,因此它们不受语言的严格限制。
从一个指向函数的有效指针转换为另一个有效指针,然后再转换回来,可以保证生成原始值。因此,必须有相同的可表示的最小数量的值,即任何给定的指向函数类型的指针的有效地址的最大数量,这给所有指向函数类型的指针的大小提供了下限。
对象类型之间的转换具有类似的保证,但是仅当原始指向类型具有更严格或相等的对齐要求时才适用。因此,指向高度对齐类型的对象指针需要较少的可表示值。如果对齐足够高,那么理论上类型可能会更小。
在允许指向void的指针和指向函数的指针之间进行转换的系统上(有条件地支持),指向函数的指针和指向void的指针的可表示值的最小数目必须相同。
但即便如此,一些指针类型可能会超过它所需的可表示值的数量。这些额外的比特就一定不会被使用。这是不太实际的。
https://stackoverflow.com/questions/61610545
复制相似问题