以下默认使用32位编译器!
空结构体
struct A{
};
cout <<
sizeof(A) << endl;
记住,此时输出就是1
只含有一个类型的结构体
char
struct A{
char a;
};
cout <<
sizeof(A) << endl;
short
struct A{
short a;
};
cout <<
sizeof(A) << endl;
int /long/float
struct A{
int a;
};
cout <<
sizeof(A) << endl;
double/long long
struct A{
double a;
};
cout <<
sizeof(A) << endl;
含有多个相同类型的结构体
char
struct A{
char a, b;
};
cout <<
sizeof(A) << endl;
不在举例说明,只是简单的叠加关系。
含有多个不相同类型的结构体——对齐问题
char + int
struct A{
char a;
int b;
};
cout <<
sizeof(A) << endl;
|–char–|———–|———–|———–| |——————–int——————–|
char + short + int
struct A{
char a;
short b;
int c;
};
cout <<
sizeof(A) << endl;
|–char–|——–short——–|———–| |——————–int——————–|
char + int + short
struct A{
char a;
int b;
short c;
};
cout <<
sizeof(A) << endl;
|–char–|———–|———–|———–| |——————–int——————–| |——-short——|———–|———–|
注意:对于上面的两种情况,编译器给出不同的解释。所以,在编写代码的时候,推荐从小到大的类型编写结构体,这样可以优化一些内存空间。
(完)
参考
http://blog.csdn.net/hsd2012/article/details/50968793