是否有指向不同类型的指针具有不同大小的平台?
C标准允许指向不同类型的指针具有不同的大小。sizeof(char*) != sizeof(int*)
是允许的。但是,如果指针被转换为void*
然后将其转换回其原始类型,则必须将其与其原始值进行比较。因此,从逻辑上讲,sizeof(void*) >= sizeof(T*)
适用于所有类型T
对不对?
在目前使用的大多数常用平台(x86、ppc、ARM和64位变体等)上,所有指针的大小都等于本机寄存器大小(4或8个字节),而不考虑指向类型。是否存在指向不同类型的指针可能具有不同大小的深奥或嵌入式平台?我特别想问的是数据指针,虽然我也想知道是否有平台功能指针的尺寸不寻常。
我绝对是不询问C+的指针到成员函数和指针到成员函数。这些函数在公共平台上具有不寻常的大小,甚至可以根据指针到类的属性(非多态、单继承、多重继承、虚拟继承或不完全类型)在一个平台内变化。