一、编译器对结构体按其成员变量对齐,以提高运算效率。为何?
原因在于,处理器访问未对齐的内存,需进行两次内存访问,相反对齐的内存则一步到位。编译器自动为结构按照自然边界对齐(natural alignment),分配内存。
二、结构体对齐控制:#pagma pack(n),n为对齐的字节数,为1、2、4、8等。
三、结构对齐的计算分两步:
1、按照成员变量计算
2、计算完第一步,看第一步计算的大小是不是成员变量中字节最大的整数倍,不是补齐则个。
一、编译器对结构体按其成员变量对齐,以提高运算效率。为何?
原因在于,处理器访问未对齐的内存,需进行两次内存访问,相反对齐的内存则一步到位。编译器自动为结构按照自然边界对齐(natural alignment),分配内存。
二、结构体对齐控制:#pagma pack(n),n为对齐的字节数,为1、2、4、8等。
三、结构对齐的计算分两步:
1、按照成员变量计算
2、计算完第一步,看第一步计算的大小是不是成员变量中字节最大的整数倍,不是补齐则个。