Oracle Solaris Studio 12.2:C++ 用户指南

A.2.53 –misalign

SPARC:允许内存中包含未对齐数据,否则会生成错误。如以下代码所示:


char b[100];
int f(int * ar) {
return *(int *) (b +2) + *ar;
}

该选项通知编译器程序中的某些数据未正确对齐。因此,非常保守的装入和存储必须用于会不对齐的任何数据,即每次一个字节。使用该选项会显著降低运行时性能。性能降低的程度与应用程序有关。

A.2.53.1 交互

如果在 SPARC 平台上使用 #pragma pack 封装效果比类型的缺省对齐紧密,必须为应用程序的编译和链接指定 -misalign 选项。

未对齐数据由 ld 提供的陷阱机制在运行时处理。如果优化标志(-xO{1|2|3|4|5} 或等价的标志)与 -misalign 选项一起使用,则用于对齐未对齐数据的附加指令会插入生成的目标文件中,且不会生成运行时未对齐陷阱。

警告

如果可能,请不要链接程序的对齐部分和未对齐部分。

如果在不同的步骤中进行编译和链接,那么编译命令和链接命令中都必须有 –misalign 选项。