是否存在无法正确对齐32位变量的情况

Gui*_*e07 5 c++ memory-alignment

在以下链接中:http://msdn.microsoft.com/en-us/library/ms684122(VS.85).aspx,据说"对正确对齐的32位变量的简单读写是原子操作".我想知道在c ++程序中是否所有32位变量默认都是正确对齐的.换句话说,有些情况是32位变量无法正确对齐.

jal*_*alf 1

如果您不告诉编译器不这样做,那么它将正确对齐 32 位变量。

可以编写将 32 位变量放置在非对齐地址的代码(例如,通过创建 的数组char,并将 int 写入数组中的奇数索引)。

您还可以使用编译器#pragmas 告诉编译器不要对齐特定类型或变量。

但如果您不这样做,那么您的变量将正确对齐。