32位和64位分配空間記憶體對齊

2021-08-03 18:13:37 字數 826 閱讀 7951

32位編譯器4個位元組,64位編譯器8個位元組;

struct t;t *p;

32 位(4+4+4+4+8)

char a   1個位元組,為了滿足位元組對齊還需填充3個位元組(填充的3個位元組浪費,編譯器位元組對齊浪費也沒辦法);[0] - - -  4

int *d    4個位元組,正好滿足位元組對齊;  [4] [5] [6] [7]    4

int b      4個位元組,正好滿足位元組對齊;  [8] [9] [10] [11]  4

int c:16  2個位元組,為了滿足位元組對齊還需填充2個位元組;[12] [13] - -  4

double e  8個位元組(兩個4四個位元組),滿足位元組對齊;  [16] [17] [18] [19]

[20] [21] [22] [23]

64位(8+8+8+8)

char a   1個位元組,為了滿足位元組對齊還需填充7個位元組;[0] - - - - - - -    8

int *d    4個位元組,為了滿足位元組對齊還需填充4個位元組;  [8] [9] [10] [11] - - - -  8

int b      4個位元組,為了滿足位元組對齊還需填充4個位元組;[16] [17] [18] [19] - - - - 

int c:16  2個位元組,因為只佔2個位元組,而上乙個位元組對齊中還有4個空的,所以這兩個合併後還要補充2個位元組 [16] [17] [18] [19]   [20] [21] - -  8

double e  8個位元組,滿足位元組對齊;[24] [25] [26] [27] [28] [29] [30] [31]   8

這就是為什麼4個8而不是5個8 的原因;

32位和64位的理解

大家都知道現在流行的作業系統是32位和64位的,都知道32位作業系統能 認出 4g以內的記憶體而64位的 可以認出多記憶體 2的64次方byte 簡稱大b,還有一種是小b,1個byte由8個bit組成 但是為什麼會64位的能認到的記憶體就多呢?先看一下概念 32位和64位 cpu一次處理資料的能力是...

32位 和 64位系統區別

1.32位系統cpu一次可處理32位資料,即一次處理4個位元組。64位系統cpu一次可處理64位資料,即一次處理8個位元組。通俗一點說 32位,就相當於你擁有32個工人,每次能完成32個工人的工作量 64位,就相當於你擁有64個工人,每次能完成64個工人的工作量 總結 由32位系統過渡到64位系統,...

32 位和 64 位 Windows識別

32 位和 64 位 windows 全部顯示 32 位和 64 位版本 windows 之間有什麼區別?術語 32 位 和 64 位 是指計算機的處理器 也稱為 cpu 處理資訊的方式。64 位版本的 windows 可處理大量的隨機訪問記憶體 ram 其效率遠遠高於 32 位的系統。我如何知道我...