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

c語言struct字節(jié)對齊 結構體成員的字節(jié)對齊?

結構體成員的字節(jié)對齊?如何編程實現(xiàn)struct字節(jié)對齊問題?結構體字節(jié)對齊原則?24(如果按8字節(jié)對齊,則先前的intfloat僅為8字節(jié),雙8字節(jié),char構成8字節(jié)=24)struct PP{in

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

如何編程實現(xiàn)struct字節(jié)對齊問題?

結構體字節(jié)對齊原則?

24(如果按8字節(jié)對齊,則先前的intfloat僅為8字節(jié),雙8字節(jié),char構成8字節(jié)=24)

struct PP{int afload B char D}OO sizeof(OO)12字節(jié),它是按照4字節(jié)對齊的

對齊與內(nèi)存中數(shù)據(jù)的位置有關。如果變量的內(nèi)存地址是其長度的整數(shù)倍,則稱為自然對齊。例如,在32位CPU中,如果整數(shù)變量的地址是0x00000004,則它自然對齊。字節(jié)對齊的根本原因是CPU訪問數(shù)據(jù)的效率。假設上面整數(shù)變量的地址不是自然對齊的,例如0x00000002,那么CPU需要訪問內(nèi)存兩次,如果它接受它的值。第一次從0x00000002-0x00000003取短,第二次從0x00000004-0x00000005取短,然后合并得到所需的數(shù)據(jù)。如果變量的地址為0x00000003,則需要訪問內(nèi)存三次,第一次訪問char,第二次訪問簡稱char,第三次訪問char,然后合并得到整數(shù)數(shù)據(jù)。如果變量處于自然對齊位置,則只能檢索一次數(shù)據(jù)。有些系統(tǒng)對對齊非常嚴格,如SPARC系統(tǒng)。如果獲取未對齊的數(shù)據(jù),則會發(fā)生錯誤。例如,char ch[8]char*P=& ch[1]int i=*(int*)P在運行時會報告為段錯誤,而X86上不會有錯誤,但效率會降低。

如何理解struct的內(nèi)存對齊?

C中的結構對齊問題:結構占用的位數(shù)是數(shù)據(jù)的整數(shù)倍,結構成員占用的位數(shù)最長。在這種結構中,結構占用的比特數(shù)是雙重類型的整數(shù)倍。雖然這種結構使用位場,但對結果沒有影響。Int i占用四個字節(jié),char J占用一個字節(jié)。這兩個字節(jié)總共占用八個字節(jié),盡管最后三個字節(jié)是無用的。inta本身占用4個字節(jié),但與結構對齊需要8個字節(jié)。雙B需要8個字節(jié)??偣?=24字節(jié)

例如,在16位計算機中,變量按2字節(jié)對齊。例如,雖然成員a是char類型,但是下一個成員B的地址在0x80000000中只有1個字節(jié),但是下一個成員B的地址不能是0x80000001,而必須是0x80000002,根據(jù)字長對齊。上述結構占用的空間為24 28=16字節(jié)