与 x86 编译器冲突
当使用 x86 编译器编译应用程序时,大于 4 字节的数据类型不会自动在堆栈上对齐。 由于 x86 编译器的体系结构为 4 字节对齐堆栈,因此大于 4 字节的任何数据类型(例如,64 位整数)均无法自动与 8 字节地址对齐。
使用未对齐的数据具有两层隐含意义。
与访问对齐的位置相比,可能需要更长的时间来访问未对齐的位置。
在互锁操作中,不能使用未对齐的位置。
如果您需要更为严格的对齐,请使用 __declspec(align(N)) on your variable declarations。 这会导致编译器与堆栈动态对齐以满足您的规范。 但是,在运行时动态调整堆栈可能会导致应用程序的执行速度变慢。