全攻略有點大放厥詞,嘩眾取寵了,其實是一些常見的問題罷了。但是自認為總結的還算全面一點吧,請大家多多賜教,我只是個初學者。
接下來主要討論四點:一、不涉及位域的內存對齊二、涉及位域的內存對齊三、成員變量含有結構體的內存對齊情況四、要求內存對齊的原因及優點
-----------------------------------------------------------------------------------
接著上一篇往下寫~~
二、涉及位域的內存對齊注:由于能力有限,在此僅討論在VC++6.0編譯環境下的情況,對于其他編譯環境下的情況,由于沒有硬件支持,只能作罷,但會將查到的相關知識貼在最后,但不做討論。涉及位域的內存對齊原則 如下,后用代碼分析驗證:1) 若相鄰成員變量類型相同,且其位寬之和不大于成員變量類型位寬(在次嚴重強調,是 類型位寬 而不是成員變量sizeof,也不是類型的sizeof或者其他什么)大小,則后面的字段將緊鄰前一個字段存儲,直到不能容納為止; 2) 如果相鄰位域字段的類型相同,但其位寬之和不大于類型的sizeof大小,則后面的字段將從新的存儲單元開始,其偏移量為其類型大小的整數倍; 3) 如果相鄰的位域字段的類型不同,不同位域字段存放在不同的位域類型字節中;(這一條其實會根據編譯器的不同而采用不同的規則,此處以VC++6.0標準來說明)4)其實不存在4),這一條是說,在此,還要遵守不涉及位域的2),3)條規則,已經部分遵守不涉及位域的第一條規則實例分析,代碼如下: