内存对齐的规则以及作用
页眉内容Postedon2009-03-1609:36阅读(3831所属分类:首先由一个程序引入话题:>>>>1//环境:vc6+windowssp22//程序13#include45usingnamespacestd;67structst18{9chara;10intb;11shortc;>>>>12};1314structst215{16shortc;17chara;18intb;19};2021intmain(22{23cout<<"sizeof(st1is"<<sizeof(st1<24cout<<"sizeof(st2is"<<sizeof(st2<25return0;26}27程序的输出结果为:sizeof(st1is12sizeof(st2is8问题出来了,这两个一样的结构体,为什么sizeof的时候大小不一样呢?本文的主要目的就是解释明白这一问题。内存对齐,正是因为内存对齐的影响,导致结果不同。对于大多数的程序员来说,内存对齐基本上是透明的,这是编译器该干的活,编译器为程序中的每个数据单元安排在合适的位置上,从而导致了相同的变量,不同声明顺序的结构体大小的不同。那么编译器为什么要进行内存对齐呢?程序1中结构体按常理来理解sizeof(st1和sizeof(st2结果都应该是7,