例如:sizeof(char*)
返回4。int*
、long long*
以及我尝试过的所有内容也是如此。这有什么例外吗?
发布于 2008-12-29 23:11:16
你得到的保证是sizeof(char) == 1
。没有其他保证,包括不保证sizeof(int *) == sizeof(double *)
。
在实践中,16位系统上的指针大小为2(如果可以找到的话),32位系统上的指针大小为4,64位系统上的指针大小为8,但是依赖于给定的大小没有任何好处。
发布于 2009-01-13 22:53:17
即使在普通的x86 32位平台上,您也可以获得各种指针大小,请尝试以下示例:
struct A {};
struct B : virtual public A {};
struct C {};
struct D : public A, public C {};
int main()
{
cout << "A:" << sizeof(void (A::*)()) << endl;
cout << "B:" << sizeof(void (B::*)()) << endl;
cout << "D:" << sizeof(void (D::*)()) << endl;
}
在Visual C++ 2008下,成员函数指针的大小分别为4、12和8。
Raymond Chen谈到了这个here。
发布于 2008-12-29 23:04:24
如果你是为64位机器编译,那么它可能是8。
https://stackoverflow.com/questions/399003
复制相似问题