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