C語言中的字節對齊

概念

對齊跟數據在內存中的位置有關。一般設置的對齊方式爲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;
    

參考資料

發佈了251 篇原創文章 · 獲贊 168 · 訪問量 31萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章