今天在使用結構體時發(fā)現結構用 sizeof 求出現的大小 與 實際的大小不一致。
例如:以下結構
typedef?struct { BYTE?ucCommStartFlag; WORD?wMessageID; WORD?wMessageAttribute; BYTE?ucMobileNumberBCD[6]; WORD?wSequenceID; WORD?wPackagesNumber; WORD?wPackageIndex; BYTE?ucCRC BYTE?ucCommEndFlag; }RegisterTerminate_T;
sizeof(RegisterTerminate_T) 竟然等于20,而不是 19。
查看內存,發(fā)現 ucCommStartFlag 后面的一個字節(jié)未使用,應該屬于字節(jié)對齊的問題:WORD 類型變量不能從奇數地址開始。