C/C++ Memory Alignment
起因
x86/ARM 上,變數在記憶體上並不是起始於隨意的位置。而會是該類類型大小的整數倍,這樣讀取資料(變數)可以比較快。
為什麼不是隨意 bytes 位置
CPU 通常是讀 Word (4/8 bytes),假如是隨意的 bytes 位置,那就有可能為了讀一個uint16_t (2 bytes) 去讀兩個 words,會比較慢。
所以有時會在「連續」的變數之間出現 gap。
uint32_t a; // 4 bytes
char gap[N]; // N bytes
uint64_...
notes.mukyu.dev2 min read