国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

c語言struct字節(jié)對(duì)齊 結(jié)構(gòu)體成員的字節(jié)對(duì)齊?

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

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

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

結(jié)構(gòu)體字節(jié)對(duì)齊原則?

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

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

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

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

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

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