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

c語言結構體對齊規(guī)則 如何理解按邊界對齊的數(shù)據(jù)存儲?

如何理解按邊界對齊的數(shù)據(jù)存儲?1 32位處理器,也就是說,CPU一次從內(nèi)存中讀取4字節(jié)的數(shù)據(jù)。2邊界對齊,即為了存儲一定長度的M字節(jié)的數(shù)據(jù),存儲地址需要存儲為M字節(jié)的整數(shù)倍,結構的整體大小是最大成員長

如何理解按邊界對齊的數(shù)據(jù)存儲?

1 32位處理器,也就是說,CPU一次從內(nèi)存中讀取4字節(jié)的數(shù)據(jù)。2邊界對齊,即為了存儲一定長度的M字節(jié)的數(shù)據(jù),存儲地址需要存儲為M字節(jié)的整數(shù)倍,結構的整體大小是最大成員長度的整數(shù)倍。

內(nèi)存對齊的目的和規(guī)則?

有四種內(nèi)存對齊原則:

1)。數(shù)據(jù)成員對齊規(guī)則:結構(或聯(lián)合)的數(shù)據(jù)成員。第一個數(shù)據(jù)成員放置在偏移量為0的位置。之后,每個數(shù)據(jù)成員存儲的起始位置從成員大小或其子成員大小的整數(shù)倍開始(只要成員有子成員,如數(shù)組、結構等)(例如,如果在32位計算機中int是4字節(jié),則應從4的整數(shù)倍地址開始存儲)?;绢愋筒话╯truct/class/Uinon。

2) . struct as member:如果一個結構中有一些結構成員,那么應該從結構中“最寬的基本類型成員”的整數(shù)倍地址存儲結構成員。(結構a包含結構B,而B包含char、int、double和其他元素,那么B應該從8的整數(shù)倍存儲。)。

3) . 收尾工作:結構的總尺寸,即sizeof的結果,必須是結構內(nèi)部最大構件的“最寬基本型構件”的整數(shù)倍。彌補不足。(基本類型不包括struct/class/Uinon)。

4) . sizeof(Union),結構中最大的元素是Union的大小,因為在特定時間,只有Union的一個成員實際存儲在地址中。

結構體字節(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上不會有錯誤,但效率會降低。