__attribute__对齐属性的理解
2013-11-28 14:55
134 查看
下面的例子中使用__attribute__属性定义了一些结构体及其变量,并给出了输出结果和对结果的分析。
程序代码为:
struct p
{
int a;
char b;
char c;
}__attribute__( ( aligned(4) ) ) pp;
struct q
{
int a;
char b;
struct n qn;
char c;
}__attribute__( ( aligned(8) ) ) qq;
int main()
{
printf("sizeof(int)=%d,sizeof(short)=%d,sizeof(char)=%d/n",sizeof(int),sizeof(short),sizeof(char));
printf("pp=%d,qq=%d /n", sizeof(pp),sizeof(qq));
return 0;
}
输出结果:
sizeof(int)=4,sizeof(short)=2,sizeof(char)=1
pp=8,qq=24
分析:
sizeof(pp):
sizeof(a)+ sizeof(b)+ sizeof(c)=4+1+1=6<2^3=8= sizeof(pp)
sizeof(qq):
sizeof(a)+ sizeof(b)=4+1=5
sizeof(qn)=8;
即qn是采用8字节对齐的,所以要在a,b后面添3个空余字节,然后才能存储qn,
4+1+(3)+8+1=17
因为qq采用的对齐是8字节对齐,所以qq的大小必定是8的整数倍,即qq的大小是一个比17大又是8的倍数的一个最小值,由此得到
17<2^4+8=24= sizeof(qq)
程序代码为:
struct p
{
int a;
char b;
char c;
}__attribute__( ( aligned(4) ) ) pp;
struct q
{
int a;
char b;
struct n qn;
char c;
}__attribute__( ( aligned(8) ) ) qq;
int main()
{
printf("sizeof(int)=%d,sizeof(short)=%d,sizeof(char)=%d/n",sizeof(int),sizeof(short),sizeof(char));
printf("pp=%d,qq=%d /n", sizeof(pp),sizeof(qq));
return 0;
}
输出结果:
sizeof(int)=4,sizeof(short)=2,sizeof(char)=1
pp=8,qq=24
分析:
sizeof(pp):
sizeof(a)+ sizeof(b)+ sizeof(c)=4+1+1=6<2^3=8= sizeof(pp)
sizeof(qq):
sizeof(a)+ sizeof(b)=4+1=5
sizeof(qn)=8;
即qn是采用8字节对齐的,所以要在a,b后面添3个空余字节,然后才能存储qn,
4+1+(3)+8+1=17
因为qq采用的对齐是8字节对齐,所以qq的大小必定是8的整数倍,即qq的大小是一个比17大又是8的倍数的一个最小值,由此得到
17<2^4+8=24= sizeof(qq)
相关文章推荐
- python属性查找 深入理解(attribute lookup)
- python属性查找 深入理解(attribute lookup)
- 通过checkbox的属性理解jquery获取attribute与property
- python属性查找 深入理解(attribute lookup)
- python属性查找 深入理解(attribute lookup)
- 通过checkbox的属性理解jquery获取attribute与property
- python属性查找 深入理解(attribute lookup)
- 关于struts-config里action元素里的attribute属性用途的理解
- python属性查找 深入理解(attribute lookup)
- 理解特性attribute 和 属性property的区别 及相关DOM操作总结
- 理解DllImportAttribute中的属性
- 理解与应用css中的display属性
- DOM中元素节点、属性节点、文本节点的理解
- DOM中元素节点、属性节点、文本节点的理解
- 理解 Delphi 的类(三) - 初识类的属性
- HTML教程:图片大小对齐间隔边框属性修改方法介绍
- new/delete和malloc/free的区别,sizeof的理解和struct内存对齐
- SOLR 中 Schema.xml 的filedType 的一些属性的理解
- 理解JAVA - 面向对象(object) - 属性,方法