这是因为字节对齐原则,在Linux下其是按2字节对齐,可是在VC++下默认是按8字节对齐,必须满足4的整数倍。这样有助于存储效率。第一个char 为1字节,int为4字节,由于8字节对齐原则系统会预留出3个字节,保证8个字节对齐。而第二个两个char 2个字节,1个int4字节,系统补充2个字节后,此时8个字节,再加一个Int为12.满足条件

struct stOne // 结构体1
{
char c1;
int i1;
char c2;
int i2;
};

struct stTwo // 结构体2
{
char c1;
char c2;
int i1;
int i2;
};

各位大侠,上面两个结构体因为硬件的边界调整原则,占用内存大小并不相同。在我的电脑上,sizeof(struct stOne)是16,sizeof(struct stTwo)是12。

是不是  1 + 4 +(3字节对齐) = 8     2+ (2字节对齐) = 4   所以是   12

 

还有 union  是以最大的 为  空间  如果没有对其他地点进行初始化的话  回是垃圾值。  以我本人看  我这个是小端模式  大端模式的话  大数据存小地址。所以我这个是小端模式  大地之村大数据所以得出0

 

posted on 2016-11-04 10:47  HDU李少帅  阅读(562)  评论(0编辑  收藏  举报