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个字节(至少在我的机器上