記憶體中每乙個位元組都有乙個確定其位置的位址,而每個變數在編譯時都在記憶體分配連續的一定位元組數的儲存單元,不同型別的變數在記憶體分配的儲存單元的大小不同。如字元型變數分配1個位元組,整形變數分配2個連續位元組,單精度實型變數分配4個連續位元組,雙精度實型變數分配8個連續位元組。變數分配的儲存單元的第乙個位元組的位址就是該變數的位址。
編譯程式在對源程式進行編譯時,每遇到乙個變數就為它分配儲存單元,同時記錄變數的名稱、變數的資料型別和變數的位址。
這是《深入理解計算機系統》中的例子,實際上可以顯示任意位址的內容。
# include void dump(void * p, int length)
int main()
0x7fff5fbffabc: 78
0x7fff5fbffabd: 56
0x7fff5fbffabe: 34
0x7fff5fbffabf: 12
記憶體儲器(簡稱記憶體或主存)由許多儲存單元組成,每個單元能存放乙個二進位制數,或一條由二進位制編碼表示的指令。位元組是計算機中資料處理和儲存容量的基本單位。1024個位元組稱為1k位元組,1024k位元組稱為1兆位元組(1mb),1024m位元組稱為1吉位元組(1gb),1024g個位元組稱為1太位元組(1tb),現在微型計算機的主存容量大多數在兆位元組(mb)以上。計算機處理資料時,一次可以運算的資料長度稱為乙個「字」(word)。字的長度稱為字長。乙個字可以是乙個位元組,也可以是多個位元組。常用的字長有8位、16位、32位、64位等。如果某一類計算機的字由4個位元組組成,則字的長度為32位,相應的計算機稱為32位機。
位元組序的理解
編者 李國帥 由於不同的cpu或者作業系統的主機序不一樣,導致在讀寫檔案或者檔案傳送的時候,使用的規則不一樣。多位元組資料型別在不同的cpu上可能讀寫方式不同。同時不同編譯器對bitfield的處理方式也可能不一樣。所以資料結構中的int型和short型變數需要在網路的兩頭先變成相同的格式傳送,接收...
關於位元組對齊的理解
位元組對齊的剖析 一 需要了解的名詞和概念 1 資料型別自身的對齊值 即資料本身所佔位元組長度。2 結構體或類的自身對齊值 即其中資料成員型別對齊值的最大值。3 指定對齊值 由程式設計人員通過 pragma pack value 指定的value值,通過 pragma pack 解除。4 結構體 類...
關於位元組對齊的理解
結構體對齊 有的時候,在腦海中停頓了很久的 顯而易見 的東西,其實根本上就是錯誤的。就拿下面的問題來看 struct t 使用sizeof t 將得到什麼樣的答案呢?要是以前,想都不用想,在32位機中,int是4個位元組,char是1個位元組,所以t一共是5個位元組。實 踐出真知,在vc6中測試了下...