今天在使用結(jié)構(gòu)體時發(fā)現(xiàn)結(jié)構(gòu)用 sizeof 求出現(xiàn)的大小 與 實際的大小不一致。
例如:以下結(jié)構(gòu)
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。
查看內(nèi)存,發(fā)現(xiàn) ucCommStartFlag 后面的一個字節(jié)未使用,應(yīng)該屬于字節(jié)對齊的問題:WORD 類型變量不能從奇數(shù)地址開始。