欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

C語言中的字節(jié)對齊-創(chuàng)新互聯(lián)

編輯中……

為崇禮等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及崇禮網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為做網(wǎng)站、成都網(wǎng)站制作、崇禮網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

字節(jié)對齊是一種軟件層面上的操作,我們編寫的C語言程序,并不能直接被硬件平臺(tái)識(shí)別,要先由編譯器將代碼編譯成匯編代碼,然后再使用匯編器將匯編代碼轉(zhuǎn)換成機(jī)器代碼,機(jī)器代碼才是硬件能夠識(shí)別并執(zhí)行的代碼。因此,字節(jié)對齊是通過軟件層面的編譯器和匯編器實(shí)現(xiàn)的,通過指定數(shù)據(jù)在內(nèi)存中的起始地址來實(shí)現(xiàn)字節(jié)對齊,我們可以在C程序中使用相應(yīng)的指令或在編譯時(shí)更改編譯器的編譯選項(xiàng)來更改字節(jié)對齊的方式。但是,請注意,在編譯器和匯編器將代碼轉(zhuǎn)換成機(jī)器代碼時(shí),可能會(huì)考慮硬件的限制,并調(diào)整字節(jié)對齊方式以滿足硬件的要求。

字節(jié)對齊是指將數(shù)據(jù)存儲(chǔ)在內(nèi)存中時(shí),數(shù)據(jù)的起始地址與某個(gè)值(稱為對齊值)的倍數(shù)對齊。對齊值通常是2的冪次方,例如1、2、4、8等。例如,如果采用4字節(jié)對齊,則將數(shù)據(jù)存儲(chǔ)到內(nèi)存中時(shí)分配到的地址總是4的倍數(shù)。值得注意的是,非常不建議使用2的冪次方以外的對齊值,因?yàn)镃語言中的數(shù)據(jù)類型占據(jù)的字節(jié)大小都是2的冪次方,如char、int,使用3字節(jié)等非2的冪次方對齊值的話,內(nèi)存碎片將無法避免。

接下來讓我們想想,為什么要這么做?

盡管CPU可以從任意內(nèi)存地址讀取數(shù)據(jù),但是對于一些CPU架構(gòu),從對齊的內(nèi)存地址讀取數(shù)據(jù)可能比從不對齊的內(nèi)存地址讀取數(shù)據(jù)要快得多(順帶一提,ARM的Cortex-M系列內(nèi)核在Cortex-M3出現(xiàn)之前都不支持非對其訪問)。因此,為了提高數(shù)據(jù)訪問速度,在一些情況下,程序員可能會(huì)希望進(jìn)行字節(jié)對齊,即使CPU本身可以從任意內(nèi)存地址讀取數(shù)據(jù)。

因此,為了提高數(shù)據(jù)訪問速度,在一些情況下,程序員可能會(huì)希望進(jìn)行字節(jié)對齊。但是,請注意,字節(jié)對齊并不總是必要的,并且還可能會(huì)增加內(nèi)存使用量。因此,在決定是否進(jìn)行字節(jié)對齊時(shí),應(yīng)考慮系統(tǒng)的具體情況,并在必要時(shí)才進(jìn)行字節(jié)對齊。

字節(jié)對齊的目的是為了提高存儲(chǔ)器訪問的效率,因?yàn)樘幚砥髟谠L問內(nèi)存時(shí)通常會(huì)以固定大小的字(如 4 字節(jié)或 8 字節(jié))為單位進(jìn)行讀寫。如果內(nèi)存地址不是字的邊界,處理器就必須進(jìn)行額外的操作來確定所需的內(nèi)存位置。

? 例如,在一個(gè) 32 位系統(tǒng)中,通常情況下 CPU 會(huì)從內(nèi)存中一次性取出一個(gè)字(word)的數(shù)據(jù),一個(gè)字的大小通常為 32 位(也有一些32位系統(tǒng)的字的大小為 64位或16 位,64位相較于16位常見得多)。這種情況下,系統(tǒng)一般采用的是4字節(jié)對齊。當(dāng) CPU 訪問一個(gè) char 類型的數(shù)據(jù)時(shí),它會(huì)從內(nèi)存中取出一個(gè)字的數(shù)據(jù),然后將其中不需要的24位視為無效數(shù)據(jù)。顯然,對于char類型這種一字節(jié)大小的數(shù)據(jù),不管它的地址是有沒有進(jìn)行字節(jié)對齊,CPU都只用進(jìn)行一次讀取操作,就能得到它的值。那么如果要讀取的數(shù)據(jù)大小為4字節(jié)呢?假設(shè)在這個(gè)32位系統(tǒng)中,long類型數(shù)據(jù)占據(jù)4個(gè)字節(jié),現(xiàn)在我們要讀取一個(gè)long類型的數(shù)據(jù),且它的地址沒有進(jìn)行字節(jié)對齊,為0x03,那么CPU要想讀取數(shù)據(jù)就必須從地址0x00處開始讀取四個(gè)字節(jié),取得0x03處的這個(gè)long型數(shù)據(jù)的低字節(jié)(小端存儲(chǔ)),從0x04開始讀取四個(gè)字節(jié),取得這個(gè)long型數(shù)據(jù)的高字節(jié),要進(jìn)行兩次讀取操作。

在 C 語言中,可以使用 #pragma pack 指令來控制結(jié)構(gòu)體、數(shù)組或其他內(nèi)存塊的字節(jié)對齊方式。例如,可以使用以下語句來將結(jié)構(gòu)體的字節(jié)對齊方式調(diào)整為 4 字節(jié)對齊:

#pragma pack(4) //從這之后定義的結(jié)構(gòu)體采用4字節(jié)對齊
struct mystruct {
   int a;    //地址偏移:0
   char b;   //地址偏移:4
   short c;  //地址偏移:8
}; //這個(gè)結(jié)構(gòu)體大小為10字節(jié)(假設(shè)這個(gè)系統(tǒng)的short為2字節(jié),int為4字節(jié))
#pragma pack()  //從這之后恢復(fù)默認(rèn)的對齊方式

在這個(gè)例子中,mystruct 結(jié)構(gòu)體的字節(jié)對齊方式被調(diào)整為 4 字節(jié)對齊。這意味著 mystruct 結(jié)構(gòu)體的起始地址必須是 4 的倍數(shù),并且結(jié)構(gòu)體中的所有字段都必須相對于起始地址對齊到 4 的倍數(shù)上。

對于數(shù)組:

#pragma pack(4)
char a[3];
#pragma pack()

即使采用4字節(jié)對齊方式,數(shù)組 a 中的每個(gè)元素仍然會(huì)占用 1 個(gè)字節(jié)的內(nèi)存空間,但是數(shù)組 a 的起始地址將調(diào)整為 4 的倍數(shù)。這葉符合數(shù)組說一片連續(xù)的內(nèi)存空間的定義。因此,在4字節(jié)對齊下,數(shù)組 a 的內(nèi)存分布情況可能會(huì)如下所示:

內(nèi)存地址內(nèi)存值
0x0004a[0]
0x0005a[1]
0x0006a[2]

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

當(dāng)前文章:C語言中的字節(jié)對齊-創(chuàng)新互聯(lián)
文章源于:http://aaarwkj.com/article18/cojhgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)動(dòng)態(tài)網(wǎng)站、網(wǎng)站改版外貿(mào)建站、網(wǎng)站排名、定制網(wǎng)站

廣告

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

h5響應(yīng)式網(wǎng)站建設(shè)
国产69精品久久久久久人| 日本熟女中文字幕一区| 日本一道本不卡一区二区| 日韩精品亚洲专区在线观看| 成人中文字幕av电影| 日韩精品在线观看一二三区| 色综合久久国产原创野外| 麻豆精品国产粉嫩av| 中文字幕日韩精品在线看| 黄色录像一级二级三级| 欧美成人午夜精品一区二区| 四影虎影永久免费观看| 少妇高潮一区二区三区99| 国产精品色网在线播放| 国内精品人妻在线中文字幕| 免费亚洲一级黄色录像| 亚洲av成人精品网站推荐| 亚洲精品中国一区二区久久| 香婷婷一区二区精品久久| 传媒在线免费观看视频| 日韩午夜免费一区二区蜜桃| 久久人妻少妇嫩草av蜜桃综合| 婷婷丁香六月激情综合| 丰满人妻熟妇乱精品视频| 日本一区二区三区不卡在线| 久久这里只有精品蜜桃| 亚洲国产精品视频自拍| 国产无套内射三级视频| 欧美一区二区三区久久妇| 国产精品一区二区高潮| 日本一区不卡二区高清| 国产一区精品在线免费看| 日韩精品高清视频在线观看| 熟女人妻丰满视频中文字幕| 国产亚洲超级97免费视频| 在线观看国产激情免费视频| 久久亚洲第一视频网站| 精品一级人片内射视频| 日本中文字幕在线一区| 中文字幕熟妇人妻av在线| 欧美午夜一级特黄大片|