网上教程一大堆,我这边就不再赘述废话了
思路方法:
1,以四个为一组,最终的内存所占结果必须是四的倍数
2,优先考虑四的整数倍,之后再考虑内存空间问题
struct Beyond{
int a;
char b;
short c;
};
int main()
{
struct Beyond yanyu;
cout<<sizeof(yanyu)<<endl;
}
解释:首先int占4字节,char占1字节,short占2字节。 以四为一组,先是存放int刚好四个字节,之后再存放char,有两种选择: ①char占四个字节(浪费三个字节空间),short占四个字节(浪费两个字节空间) ; ②char占两个字节(浪费一个字节空间),short占两个字节,这俩个组成一组 。 要你你会如何选择?很显然选择方案② 最终:int占四个字节(为一组)、char占两个字节short占两个字节(为一组),最后所占内存空间为4+4=8字节
struct Data{
char b;
int a;
short c;
};
int main()
{
struct Beyond yanyu;
cout<<sizeof(yanyu)<<endl;
}
解释:首先char为一个字节,int为四个字节,四个字节为一组,没办法,为了高效,只能浪费内存空间了,char只能占四个字节独自成为一组;int占四个字节为一组;short占两个字节,但是必须四个字节为一组,故short也只能占四个字节成为一组。 最终:char占四个字节(浪费两个字节空间)为一组,int占四个字节为一组,short占四个字节(浪费俩个字节空间)为一组。最后所占内存空间为4+4+4=12字节。
struct Beyond{
char b;
short c;
int a;
};
int main()
{
struct Beyond yanyu;
cout<<sizeof(yanyu)<<endl;
}
解释:首先char占一个字节,short占两个字节;有两种方案可以执行: ①char占四个字节(浪费三个字节内存空间),组成一组,short占四个字节(浪费两个字节内存空间),组成一组; ②char占两个字节(浪费一个字节内存空间),short占两个字节,共组成一组 要你你会如何选择?肯定是方案② 紧接着,int占四个字节为一组。 最终:char占两个字节,short占两个字节,int占四个字节,2+2+4=8个字节。
|