內(nèi)存對齊那點(diǎn)事-創(chuàng)新互聯(lián)

基礎(chǔ) 何為內(nèi)存對齊

現(xiàn)代計算機(jī)中內(nèi)存空間都是按照字節(jié)(byte)進(jìn)行劃分的,所以從理論上講對于任何類型的變量訪問都可以從任意地址開始,但是在實際情況中,在訪問特定類型變量的時候經(jīng)常在特定的內(nèi)存地址訪問,所以這就需要把各種類型數(shù)據(jù)按照一定的規(guī)則在空間上排列,而不是按照順序一個接一個的排放,這種就稱為內(nèi)存對齊,內(nèi)存對齊是指首地址對齊,而不是說每個變量大小對齊。

創(chuàng)新互聯(lián)長期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為衛(wèi)東企業(yè)提供專業(yè)的網(wǎng)站設(shè)計、做網(wǎng)站,衛(wèi)東網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。為什么要內(nèi)存對齊

我們知道內(nèi)存的最小單元是一個字節(jié),但是當(dāng)cpu從內(nèi)存中讀取數(shù)據(jù)的時候,cpu并不是以字節(jié)為單位訪問數(shù)據(jù),而是將內(nèi)存當(dāng)成多個塊,每次從內(nèi)存中讀取一個塊,這個塊的大小可能是2、4、8、16字節(jié)等。

如果沒有對齊,為了訪問一個變量可能產(chǎn)生二次訪問。

所以內(nèi)存對齊是操作系統(tǒng)為了提高訪問內(nèi)存的效率。操作系統(tǒng)在訪問內(nèi)存的時候,每次讀取一定長度(這個長度是操作系統(tǒng)默認(rèn)的對齊數(shù),或者默認(rèn)對齊數(shù)的整數(shù)倍)。使用空間換時間,提高了效率。

如何內(nèi)存對齊
  • 對于標(biāo)準(zhǔn)數(shù)據(jù)類型,它的存放地址只要是它的長度的整數(shù)倍。
  • 對于非標(biāo)準(zhǔn)數(shù)據(jù)類型,比如結(jié)構(gòu)體,要遵循一下對齊原則:
    1、第一個數(shù)據(jù)成員要放在offset為0的位置。
    
    2、從第二個數(shù)據(jù)成員開始 要放在 min(當(dāng)前成員大小,對齊模數(shù))的整數(shù)倍的地方開始位置。
    比如int在32位機(jī)器為4字節(jié),#pargama pack(2),即對齊模數(shù)為2。那么從2的倍數(shù)地方開始存儲
    
    3、二次偏移:所有屬性計算完后,結(jié)構(gòu)體的總大小為:min(結(jié)構(gòu)體內(nèi)部大成員大小, 對齊模數(shù))的整數(shù)倍,不足補(bǔ)齊。
    
    4、結(jié)構(gòu)體做為成員的對齊規(guī)則。假設(shè)A結(jié)構(gòu)體為B結(jié)構(gòu)體的成員,那么結(jié)構(gòu)體A的起點(diǎn)位置為 min(A結(jié)構(gòu)體中大成員, 對齊模數(shù))。
    
    注意:
    1、對齊模數(shù)可以通過#pargama pack(show)查看(默認(rèn)對齊模數(shù)=8字節(jié)),也可以通過#pargama pack(n),修改為n

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

文章標(biāo)題:內(nèi)存對齊那點(diǎn)事-創(chuàng)新互聯(lián)
地址分享:http://bm7419.com/article28/cedccp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、網(wǎng)站改版、網(wǎng)站設(shè)計公司品牌網(wǎng)站制作、標(biāo)簽優(yōu)化手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化