概念
對齊跟數據在內存中的位置有關。一般設置的對齊方式爲1,2,4字節對齊方式。
特殊的是,如果一個變量的內存地址正好位於它長度的整數倍,他就被稱做自然對齊,舉個例子:
比如在32位cpu下,假設一個整型變量的地址爲0x00000004,那它就是自然對齊的。
字節對齊的寫法和編譯器有關,比如MDK、IAR、GCC的基本實現都不一樣,不過可以使用宏重定義來統一起來。
目的
如果讓一個變量的內存地址正好位於它長度的整數倍(自然對齊,比如32位單片機是4字節),採用這種方式可以提高CPU訪問的效率。
應用
- 在RT-thread定義棧的代碼就使用了字節對齊的方法。
ALIGN(RT_ALIGN_SIZE) // RT_ALIGN_SIZE此處爲4,要求給下面的數組分配地址時滿足4字節對齊 static char thread2_stack[1024]; static struct rt_thread thread2;