对于大多数x86-64指令来说,保持数据对齐能够提高效率。但是它不会影响程序的行为。
另一方面,如果数据没有对齐,某些型号的Intel和AMD处理器对于有些实现多媒体操作的SSE指令,就无法正确执行。
这些指令对16字节数据块进行操作,在SSE单元和内存之间传送数据的指令要求内存地址必须是16的倍数。
任何针对x86-64处理器的编译器和运行时系统都必须保证分配用来保存可能会被SSE寄存器读或者写的数据结构的内存。
任何内存分配函数alloca,malloc,calloc,realloc生成的块的初始地址都必须是16的倍数。