[問題] 記憶體Alignment access
問題(Question):
最近碰到有關於Alignment的一些觀念問題
這邊舉一個例子好了
如:
typedef struct myStruct {
char letter;
unsigned short num;
};
若在32-bit的環境編譯後myStruct的資料型態會是4-byte
因此其在記憶體中的資料排列會是
+---------------+
0x00 | letter |
+---------------+
0x01 | num |
+-- --+
0x02 | |
+---------------+
|(padding) +
+---------------+
| |
......
那對於32-bit處理器在做存取時
假設0x00為其基底好了
如果是要取letter的話, 記憶體位移量會是0x00
所以直接對0x00定址後取4-byte出來
那之後再取num的話
處理器在做記憶體存取時
需要再改變其位移量嗎(0x01)
還是說同樣對0x00取整個4-byte進處理器??
謝謝!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.59.10
※ 編輯: cywec 來自: 118.166.59.10 (11/17 21:23)
→
11/17 21:26, , 1F
11/17 21:26, 1F
→
11/17 21:26, , 2F
11/17 21:26, 2F
→
11/17 21:27, , 3F
11/17 21:27, 3F
→
11/17 21:28, , 4F
11/17 21:28, 4F
→
11/17 21:28, , 5F
11/17 21:28, 5F
→
11/17 21:28, , 6F
11/17 21:28, 6F
→
11/17 21:29, , 7F
11/17 21:29, 7F
→
11/17 21:29, , 8F
11/17 21:29, 8F
→
11/17 21:29, , 9F
11/17 21:29, 9F
→
11/17 21:30, , 10F
11/17 21:30, 10F
→
11/17 22:36, , 11F
11/17 22:36, 11F
→
11/17 23:21, , 12F
11/17 23:21, 12F
推
11/17 23:31, , 13F
11/17 23:31, 13F
→
11/17 23:35, , 14F
11/17 23:35, 14F
→
11/17 23:40, , 15F
11/17 23:40, 15F
→
11/17 23:41, , 16F
11/17 23:41, 16F
→
11/18 07:08, , 17F
11/18 07:08, 17F
→
11/18 07:10, , 18F
11/18 07:10, 18F
→
11/18 12:27, , 19F
11/18 12:27, 19F
→
11/18 12:27, , 20F
11/18 12:27, 20F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章