1 class a{ 2 int d; 3 // virtual void ssss(); 4 }; 5 qDebug() <<sizeof(a) << sizeof(int) << sizeof(void*);
打印: 4 4 8
2 class a{ 3 int d; 4 virtual void ssss(); 5 }; 6 qDebug() <<sizeof(a) << sizeof(int) << sizeof(void*);
打印: 16 4 8 内存对齐的原故 非 4+8, 有4字节浪费
1 class a{ 2 // int d; 3 virtual void ssss(); 4 }; 5 qDebug() <<sizeof(a) << sizeof(int) << sizeof(void*);
打印: 8 4 8 VPTR长度
1 class a{ 2 // int d; 3 /*virtual */void ssss(); 4 }; 5 qDebug() <<sizeof(a) << sizeof(int) << sizeof(void*);
打印: 1 4 8 编译器强制a长度非零(每个对象必须有一个相互区别的地址
还有些其他类型的指针没有贴代码上来 , qt中指针好像都是 8个字节而不是vs中4个字节(至少在我的机器上