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

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è)
亚洲不卡一区二区在线| 粉嫩一区二区三区精品视频| 欧美精品亚洲二区中文乱码| 午夜丁香婷婷爽少妇av| 深夜三级福利在线观看| 色综合av男人的天堂| 亚洲激情视频久久精品| 国产一区二区三区自拍| 激情内射日本一区二区三区 | 无码精品人妻一区二区三区中| 91无人区一区二区三乱码| 92午夜福利精品视频| 日韩精品一区二区在线天天狠天| 亚洲欧美天堂一区二区| 美腿丝袜清纯唯美亚洲另类| 亚洲成人日韩在线播放 | 欧美日韩高清一区二区三区| 91亚洲蜜桃内射后入在线观看| 国产有码日产一区在线观看| 精品欧美日韩国产一区| 国产成人原创免费观看| 九九视频免费观看91| 2023天天操夜夜操| 亚洲成人av综合在线| 中文字幕av免费专区| 自拍偷拍欧美日韩第一页| 99国产综合精品女| 韩国黄色理论片一区二区麻豆 | 色哟哟亚洲精品一区二区| 亚洲激情在线观看一区| 未满十八禁止免费在线观看| 日韩欧美午夜福利在线视频| av日韩在线一区二区三区| av色狠狠一区二区三区| 日韩亚洲在线中文字幕| 国产精品一区二区麻豆本子| 青青草原精品资源视频| 91精品一久久香蕉国产| 欧美曰韩国内精品中文| 精品一区二区三区亚洲| 亚洲精品自拍一二三四区|