标签:
1 #include <iostream> 2 3 #pragma pack(4) 4 5 struct A{ 6 A() {} 7 ~A() {} 8 int m1; // 4 字节 9 int m2; // 4 字节 10 }; 11 struct B:A{ 12 B() {} 13 ~B() {} 14 int m1; // 4 字节 15 char m2; 16 static char m3; 17 }; 18 struct C{ 19 C() {} 20 virtual~C() {} // 64 位系统为 8 字节 // 32 位系统为 4 字节 21 int m1; // 4 字节 22 short m2; 23 }; 24 25 int main() 26 { 27 std::cout << sizeof(A) << std::endl; 28 std::cout << sizeof(B) << std::endl; 29 std::cout << sizeof(C) << std::endl; 30 std::cout << sizeof(int *) << std::endl; 31 32 return 0; 33 }
sizeof(A) = 4 + 4 = 8 byte
sizeof(B) = sizeof(A) + 4 + 1 (需内存对齐) = 16 byte
sizeof(C) = 虚函数指针大小 4 + 4 + 2 (需内存对齐) = 12 byte
sizeof(A) = 4 + 4 = 8 byte
sizeof(B) = sizeof(A) + 4 + 1(需内存对齐) = 16 byte
sizeof(C) = 虚函数指针大小 8 + 4 + 2 (需内存对齐) = 16 byte
标签:
原文地址:http://www.cnblogs.com/ydlme/p/4343236.html