#pragma pack(n) 可指定内存对其字节数,n的值可以为(1,2,4,8,16)。当定义类的时候系统会按照min(n,member size)进行对其。
系统默认通常为8;也就是说当成员大小小于8时,对其位置为自身大小的整数倍,大于8时对其位置为8的整数倍。
样例程序:
#include<iostream>
using namespace std;
class s{
public:
s():a(1),b(2),x(3){
cout<<"construct s"<<endl;
}
int x;
long int b;
int a;
};
class m{
public:
m():a(1),b(2),x(3){
cout<<"construct m"<<endl;
}
int x;
private:
int a;
int b;
};
int main(int argc, char* argv) {
m o;
s o1;
// int *p=(int *)&;
cout<<sizeof(o1)<<endl;
cout<<sizeof(o)<<endl;
cout<<*(((int *)(&o)))<<endl;
cout<<*(((int *)(&o)) + 1)<<endl;
cout<<*(((int *)(&o)) + 2)<<endl;
}
结果如下:
construct m
construct s
24
12
3
1
2