首页 > 技术文章 > WinCE 下最简单的字节对齐问题

91program 2016-02-22 10:39 原文

今天在使用结构体时发现结构用 sizeof 求出现的大小 与 实际的大小不一致。

例如:以下结构

 1 typedef struct  
 2 {  
 3     BYTE ucCommStartFlag;  
 4   
 5     WORD wMessageID;  
 6     WORD wMessageAttribute;  
 7     BYTE ucMobileNumberBCD[6];  
 8     WORD wSequenceID;  
 9     WORD wPackagesNumber;  
10     WORD wPackageIndex;  
11     BYTE ucCRC  
12   
13     BYTE ucCommEndFlag;  
14 }RegisterTerminate_T;  

sizeof(RegisterTerminate_T) 竟然等于20,而不是 19。
查看内存,发现 ucCommStartFlag 后面的一个字节未使用,应该属于字节对齐的问题:WORD 类型变量不能从奇数地址开始。

推荐阅读