概念
对齐跟数据在内存中的位置有关。一般设置的对齐方式为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;