网上教程一大堆,我这边就不再赘述废话了
思路方法:
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个字节。