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