1. 程式人生 > >CPU訪問記憶體時的地址對齊問題

CPU訪問記憶體時的地址對齊問題

  • CPU 通過地址匯流排和資料匯流排訪問記憶體。記憶體類似一個大的矩陣陣列,通過地址匯流排找到相應的位置,然後將資料傳送到資料匯流排上。CPU通過快取記憶體Cache讀取資料。
  • 在CPU的定址空間中,位元組(Byte,8 bits)是表示儲存容量的唯一單位。
  • 32位儲存系統(記憶體)的每個儲存單元都是4位元組(32 bits)。一個匯流排週期內,CPU從記憶體讀寫4位元組(32 bits)。CPU 要在能夠被4整除的地址上訪問記憶體。CPU發出地址(A,4的倍數),從記憶體中找到這個地址(A= A/4), 記憶體將這個地址上的資料傳送到資料匯流排上。
  • 設定編譯器對齊位元組數
     #pragma pack(n) /* n = 1, 2, 4, 8, 16 */