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;
    

参考资料

  • CSDN:C语言字节对齐
  • 知乎:理一理字节对齐的那些事

你可能感兴趣的:(计算机基础知识)