结构体里面 3个char 一个 short为什么sizeof返回是6 呢?不该是 5吗

结构体里边 3个char 一个 short为什么sizeof返回是6 呢?不该是 5吗
typedef struct LINK_UPDATE_
{
unsigned char  link_update_sn;
unsigned char  new_map_ofdm_num;

unsigned char  new_map_frame_offset;
unsigned short new_map_length;
}LINK_UPDATE,*PLINK_UPDATE;


就是 这个可恶的   家伙 ,,想了半天没想懂?sizeof(LINK_UPDATE)返回的是 6.。。。。。。  char是1 short是 2  不该是 5吗 
------解决方案--------------------
引用:
typedef struct LINK_UPDATE_
{
unsigned char  link_update_sn;
unsigned char  new_map_ofdm_num;

unsigned char  new_map_frame_offset;
unsigned short new_map_length;
}LINK_UPDATE,*PLINK_UPDATE;


就是 这个可恶的   家伙 ,,想了半天没想懂?sizeof(LINK_UPDATE)返回的是 6.。。。。。。  char是1 short是 2  不该是 5吗 

内存对齐的问题,前面三个char占用3个字节,第四个字节空着,然后第五个字节存放最后一个成员,所以6个字节。
------解决方案--------------------
google“内存对齐”。
很多编译器的开关也可改变对齐行为。
------解决方案--------------------
内存对齐,提高速度!
32位操作系统一般都是4字节对齐的