综合
通过上述,一般以为只要按照最好的排序方式,结构体就会对齐了.其实并不是这样的,他只会对不
同类型的变量之间做对齐,如果如下面的结构体.typedef struct
{
Uint8_t a1; //1
uint8_t a2[5]; //7
uint32_t a3[2]; //4
}Struce_A;
因为第一个和第一个变量的类型是一致的,所以系统会合并,所以 a1+a2 的大小才是 8byte.如果如下,就
会对齐了,但是长度就会编程 16byte.
在第一个例子里面会存在效率的问题,如果在一些低功耗上,或者对算法实时性要求较高的地方,就会是个
不小的问题.为什么?因为 a2 没有对齐.这会带来效率上的问题,下面我们通过实际代码来测试这个效率
差.
|