卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

c語言結(jié)構(gòu)體對齊規(guī)則 結(jié)構(gòu)體成員的字節(jié)對齊?

結(jié)構(gòu)體成員的字節(jié)對齊?這個問題非常嚴重。首先,我想說的是字節(jié)對齊的語法在不同的編譯器下是不同的。在GCC中,它是#pragmapush(1)#pragmapack(),在MSC VC中的代碼項可以調(diào)整

結(jié)構(gòu)體成員的字節(jié)對齊?

這個問題非常嚴重。首先,我想說的是字節(jié)對齊的語法在不同的編譯器下是不同的。在GCC中,它是#pragmapush(1)#pragmapack(),在MSC VC中的代碼項可以調(diào)整,默認為8字節(jié);typestruct{charcinti}test byte alignment,是alignment,例如char和int是4字節(jié)對齊的,那么char會占用4字節(jié),一共8字節(jié),結(jié)構(gòu)對象存儲是按順序存儲的,char必須在int前面。在第二種情況下,如果一個字節(jié)對齊,則表示char只占用一個字節(jié),而int將占用四個字節(jié)。這種n字節(jié)對齊意味著每個成員占用的空間必須是n字節(jié)的倍數(shù),小于n字節(jié)的占用n字節(jié)。所以把它和一個字節(jié)對齊,它需要五個字節(jié)。此外,根處理器與您提到的每種數(shù)據(jù)類型的低位還是高位在前面有關(guān)。Intel處理小型端對齊。例如,整數(shù)522387969用十六進制表示為:0x1f230201,在英特爾處理器中表示為0x0102231f,因此內(nèi)存使用0x0102031f來表示522387969,這稱為小端對齊。但在arm處理器中,522387969表示為0x1f230201,這被稱為大端對齊,也被稱為網(wǎng)絡(luò)字節(jié)順序。當然,上面提到的字節(jié)順序只對內(nèi)置數(shù)據(jù)類型(如intlongshort)有效。如果結(jié)構(gòu)中有intlong這樣的成員,那么也會有所謂的字節(jié)順序。如上所述,無論順序是什么,結(jié)構(gòu)對象都是按順序存儲的。首先定義的成員必須在后面定義的成員之前,但單個成員具有字節(jié)順序。我不知道怎么說明白嗎?不,請仔細理解這句話:n字節(jié)對齊意味著每個成員占用的空間必須是n字節(jié)的倍數(shù),小于n字節(jié)的占用n字節(jié)。例如,在16位計算機中,變量按2字節(jié)對齊。例如,雖然成員a是char類型,其地址在0x80000000中只有1個字節(jié),但下一個成員B不能使用0x80000001的地址,而必須使用0x8000000002的地址,即按字長對齊。上述結(jié)構(gòu)占用的空間為24 28=16字節(jié)