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

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

內(nèi)存對齊的目的和規(guī)則?有四種內(nèi)存對齊原則:1)。數(shù)據(jù)成員對齊規(guī)則:結(jié)構(gòu)(或聯(lián)合)的數(shù)據(jù)成員。第一個數(shù)據(jù)成員放置在偏移量為0的位置。之后,每個數(shù)據(jù)成員存儲的起始位置從該成員大小或其子成員大小的整數(shù)倍開始

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

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

1)。數(shù)據(jù)成員對齊規(guī)則:結(jié)構(gòu)(或聯(lián)合)的數(shù)據(jù)成員。第一個數(shù)據(jù)成員放置在偏移量為0的位置。之后,每個數(shù)據(jù)成員存儲的起始位置從該成員大小或其子成員大小的整數(shù)倍開始(只要該成員有子成員,如數(shù)組、結(jié)構(gòu)等)(例如,在32位計算機中int為4字節(jié),則應(yīng)從4的整數(shù)倍地址開始存儲)。基本類型不包括struct/class/Uinon。

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

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

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

怎么做8字節(jié)內(nèi)存對齊?

VC和GCC默認(rèn)都是4字節(jié)對齊方式,#pragma pack(n)可用于在編程中指定對齊模數(shù)。造成上述差異的原因是VC和GCC對double類型的對齊方式不同。Win32平臺上的microsoftvc編譯器默認(rèn)采用以下對齊規(guī)則:任何基本數(shù)據(jù)類型T的對齊模數(shù)為T的大小,即sizeof(T)。例如,對于double類型(8字節(jié)),這種類型的數(shù)據(jù)的地址總是8的倍數(shù),而char類型的數(shù)據(jù)(1字節(jié))可以從任何地址開始。Linux下的GCC遵循另一套規(guī)則:2字節(jié)大小(包括單字節(jié))的任何數(shù)據(jù)類型的對齊模數(shù)是2,而所有其他超過2字節(jié)大小的數(shù)據(jù)類型(如long、double)都是4。復(fù)雜類型(如結(jié)構(gòu))的默認(rèn)對齊方式是其最長成員的對齊方式,當(dāng)成員是復(fù)雜類型時,該對齊方式會使長度最小化。Struct{char a;double B;}在VC中,由于結(jié)構(gòu)中有double和char,根據(jù)最長的數(shù)據(jù)類型對齊方式,char只占用1b,但后面的double占用的空間超過8b,char獨占8b;而double占用8b,共16byte。在GCC中,double的長度超過4個字節(jié),并按4個字節(jié)對齊。原理同上,但char取4字節(jié),double取2個4字節(jié),共12字節(jié)。

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

為了加快計算機的訪問速度,編譯器在默認(rèn)情況下對內(nèi)存進(jìn)行字節(jié)對齊。結(jié)構(gòu)(包括類)字節(jié)對齊的原則如下:

1)結(jié)構(gòu)變量的第一個地址可以除以其最寬的基本類型成員的大??;

2)結(jié)構(gòu)的每個成員相對于結(jié)構(gòu)的第一個地址的偏移量是成員大小的整數(shù)倍。如果需要,編譯器將在成員之間添加內(nèi)部加法;

3)結(jié)構(gòu)的總大小是結(jié)構(gòu)最寬基本類型成員大小的整數(shù)倍。如果需要,編譯器將在最后一個成員之后添加尾隨填充。Structsbyte1{double//offset 0~7charj//offset 8inta//offset 12~15,因為9不能被4除,請先填寫9~11}sizeof(sbyte1)//=16structsbyte2{charj//offset 0double//offset 8~15,因為1不能被8除,請先填寫1~7inta//offset 16~19}sizeof(sbyte2)//=24,為了使倍數(shù)為8,填寫20~23

主要原因是CPU執(zhí)行內(nèi)存訪問指令時,如果地址對齊,可以縮短內(nèi)存訪問的時鐘周期,從而提高內(nèi)存訪問速度。1隨著硬盤容量的不斷擴大,為了提高硬盤的容錯能力和讀寫速度,將原來的每扇區(qū)512字節(jié)改為每扇區(qū)4096字節(jié),也就是現(xiàn)在通常所說的“4K扇區(qū)”。所謂“4K對齊”是指硬盤按照“4K扇區(qū)”的定義格式化,并按照每個扇區(qū)4K的規(guī)則寫入數(shù)據(jù)。2如果4K未對齊,例如在ntfs6中。X規(guī)范之前,數(shù)據(jù)的寫入點正好在兩個4K扇區(qū)之間,也就是說,即使寫入的數(shù)據(jù)量最小,也會使用兩個4K扇區(qū),這會導(dǎo)致跨區(qū)域讀寫,讀寫次數(shù)大,影響讀寫速度。三。由于寫入次數(shù)有限,如果4K沒有對齊,不僅性能會下降,而且使用壽命也會縮短。所有使用高級格式的硬盤也需要對齊,否則性能會受到影響。4目前,大多數(shù)大容量機械硬盤都支持高級格式,即4K格式。使用win7的安裝程序分區(qū)、win7的磁盤管理和win7的Diskpart命令行工具,所有分區(qū)都是對齊的。使用diskgenius,您可以手動指定起始扇區(qū)位置,也就是說,它可以對齊或不對齊。請注意,分區(qū)時,請選擇“對齊到下一個扇區(qū)的整數(shù)倍”,然后選擇8個或更多扇區(qū)。建議選擇2048,這是win7分區(qū)的關(guān)鍵。實際對齊大小為1024k。

字節(jié)對齊會影響內(nèi)存訪問的效率嗎?

邊界對齊:例如,一行內(nèi)存有16位,現(xiàn)在您有8位數(shù)據(jù)、4位數(shù)據(jù)和8位數(shù)據(jù)。如果邊界沒有對齊,內(nèi)存的第一行應(yīng)該存儲前八位數(shù)據(jù)和四位數(shù)據(jù),然后存儲另一個八位數(shù)據(jù)的前四位,最后四位放在第二行,對嗎?但如果是邊界對,第一行只放前8位數(shù)據(jù)和第4位數(shù)據(jù),最后8位數(shù)據(jù)放在第二行。。。。這會浪費空間,但很容易理解嗎?然后將計算機存儲分為大端存儲和小段存儲。如果存儲數(shù)據(jù)的低位從內(nèi)存的低位地址開始,則為小端,否則為大端。。。

手機內(nèi)存卡要4K對齊嗎,如何對齊?

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