C语言的那些小秘密之字节对齐

发表于:2011-12-15 10:25

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:bigloomy(CSDNblog)    来源:51Testing软件测试网采编

分享:

  运行结果为:

  1. sizeof(stu1)    :       10  
  2. sizeof(stu2)    :       12  
  3. Press any key to continue

  现在来分析下上面的代码。由于之前我们一直都在使用struct,所以在这里我们特地例举了一个union的代码来分析下,我们大家都知道union的大小取决于它所有的成员中占用空间最大的一个成员的大小。由于在union  stu1中我们使用了1字节对齐,所以对于stu1来说占用空间最大的是char str[10]类型的数组,,其值为10。为什么stu1为10而stu2却是12呢?因为在stu2的上面我们使用了#pragma pack () ,取消指定对齐,恢复缺省对齐。所以由于stu2其中int类型成员的存在,使stu2的对齐方式变成4字节对齐,也就是说,stu2的大小必须在4的对界上,换句话说就是stu2的大小要是4的整数倍,所以占用的空间变成了12。

相关链接:

C语言的那些小秘密之内存分配

C语言的那些小秘密之堆栈

C语言的那些小秘密之函数指针

C语言的那些小秘密之变参函数的实现

C语言的那些小秘密之函数的调用关系

C语言的那些小秘密之const修饰符

C语言的那些小秘密之指针(一)

C语言的那些小秘密之指针(二)

C语言的那些小秘密之指针(三)

C语言的那些小秘密之指针(四)

C语言的那些小秘密之断言

C语言的那些小秘密之动态数组

C语言的那些小秘密之链表(一)

C语言的那些小秘密之链表(二)

55/5<12345
2023测试行业从业人员调查问卷已开启,千元大奖正在等你~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号