WinCE 下最简单的字节对齐问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WinCE 下最简单的字节对齐问题相关的知识,希望对你有一定的参考价值。

今天在使用结构体时发现结构用 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 类型变量不能从奇数地址开始。

以上是关于WinCE 下最简单的字节对齐问题的主要内容,如果未能解决你的问题,请参考以下文章

字节对齐

WinCE:连接期间出现 10053 错误

结构体字节对齐问题探究

结构体字节对齐问题探究

为啥动态分配的内存总是 16 字节对齐?

将 16 字节字符串与 SSE 进行比较