位元組對齊問題

2021-06-04 11:54:49 字數 504 閱讀 7812

位元組序問題關係到資料結構設計的是否合理,合理的資料結構設計可以節省記憶體空間,同時還能夠提高資料訪問效率,這在資源有限的其嵌入式系統中是非常重要的.

我們可以先看看這兩個例子就大概了解了位元組對齊的問題了。

在pc機上char是佔1個位元組,而int是4個位元組。

#include #include void main()

stra;

printf("the char is %d\n",sizeof(char));

printf("the int is %d\n",sizeof(int));

printf("the size is %d\n",sizeof(stra));

}

我們看到這時是占用了16個位元組,那如果把結構體中的順序稍微調節一下,如

struct

stra;

編譯後執行的結果是:

點到這裡就差不多了。

位元組對齊問題

現代計算機中記憶體空間都是按照byte劃分的,從理論上講似乎對任何型別的變數的訪問可以從任何位址開始,但實際情況是在訪問特定型別變數的時候經常在特 定的記憶體位址訪問,這就需要各種型別資料按照一定的規則在空間上排列,而不是順序的乙個接乙個的排放,這就是對齊。對齊的作用和原因 各個硬體平台對儲存空間的...

位元組對齊問題

1 什麼是位元組對齊問題?一般來說,計算機按照其字長方式來定址可以提高執行效率,比如32位 4位元組 的x86 結構下,如果每次訪問的變數其位址都是4的倍數,則每次對變數的訪問只需要一次匯流排 操作。因此,編譯器為了迎合cpu的這一特性,一般在編譯的時候都會對變數的儲存方式 進行對齊處理。當然x86...

位元組對齊問題

為了能使cpu對變數進行高效快速的訪問,變數的起始位址應該具有某些特性,即所謂的 對齊 例如對於4位元組的int型別變數,其起始位址應位於4位元組邊界上,即起始位址能夠被4整除。變數的對齊規則如下 32位系統 type alignment char 在位元組邊界上對齊 short 16 bit 在雙...