C的struct内存对齐的问题(二)
#include <stdio.h>
#include <iostream.h>
int main(void)
{
typedef struct{
unsigned short a:8;
unsigned short b:9;
unsigned short c:10;
}T_struct1;
typedef struct{
unsigned short a:2;
unsigned short b:10;
unsigned short c:4;
unsigned short d:10;
unsigned short e:6;
}T_struct2;
typedef struct{
unsigned short a:2;
unsigned short b:10;
unsigned short c:10;
unsigned short d:4;
unsigned short e:6;
}T_struct3;
cout<<sizeof(T_struct1)<<endl;
cout<<sizeof(T_struct2)<<endl;
cout<<sizeof(T_struct3)<<endl;
return 0;
}
执行的结果是:
6
4
6
解释:
struct中unsigned short为16bit,2字节宽。
对T_struct1,占据的内存为:2(只用了8bit)+2(只用了9bit)+2(只用了10bit)
对T_struct2,占据的内存为:2((2+10+2)bit)+2((10+6)bit)
对T_struct3,占据的内存为:2((2+10)bit)+2((10+4)bit)+2(6bit)
#include <iostream.h>
int main(void)
{
typedef struct{
unsigned short a:8;
unsigned short b:9;
unsigned short c:10;
}T_struct1;
typedef struct{
unsigned short a:2;
unsigned short b:10;
unsigned short c:4;
unsigned short d:10;
unsigned short e:6;
}T_struct2;
typedef struct{
unsigned short a:2;
unsigned short b:10;
unsigned short c:10;
unsigned short d:4;
unsigned short e:6;
}T_struct3;
cout<<sizeof(T_struct1)<<endl;
cout<<sizeof(T_struct2)<<endl;
cout<<sizeof(T_struct3)<<endl;
return 0;
}
执行的结果是:
6
4
6
解释:
struct中unsigned short为16bit,2字节宽。
对T_struct1,占据的内存为:2(只用了8bit)+2(只用了9bit)+2(只用了10bit)
对T_struct2,占据的内存为:2((2+10+2)bit)+2((10+6)bit)
对T_struct3,占据的内存为:2((2+10)bit)+2((10+4)bit)+2(6bit)
posted on 2009-08-25 10:53 vincenzo.lai 阅读(381) 评论(0) 收藏 举报
浙公网安备 33010602011771号