现在的位置: 首页 > 综合 > 正文

c语言共用体对齐

2012年09月02日 ⁄ 综合 ⁄ 共 652字 ⁄ 字号 评论关闭

还从网上找到共用体内存分配原则的文章,下面列几个例子说明:

1.Union data1{

                   double  d;

                   int     i;

                   char    c1;

                   char    c2[9]; 

   };

 sizeof(union data1)的值为16.在编译器默认设置的情况下,该共用体最大基本类型为double,它占8字节,所以此共用体以8来对齐。字符数组c2占9个字节,那么整个共用体应该占9个字节,但按照对齐原则,实际分配给它的内存为16字节。

2.Union data2{

               int    i;

               char    c1;

               char    c2[9]; 

};

sizeof(union data2)的值为12,该共用体占内存空间最大的基本数据类型为int,其长度为4,所以该共用体以4来对齐。该共用体的长度取决于字符c2,其长度为9,9不是4的倍数,要进行对齐,因此实际分配的存储空间为12.

3.Union data3{

               char    c1;

               char    c2[3]; 

 };

sizeof(union data3)的值为3,该共用体占内存空间最大的基本数据类型为char,其长度为1,所以该共用体以1来对齐。该共用体的长度取决于字符c2,其长度为3,因此分配的存储空间为3。

抱歉!评论已关闭.