错位警告是否修复它们?

misalignment warnings fix them or no?

在我的自定义 .zip 解压器中,我收到如下警告:

runtime error: load of misaligned address 0x7f280ffe875a for type 'const uint32_t', which requires 4 byte alignment

原因是 reinterpret_castuint32_t* 以及对它们的取消引用。我知道 memcpy 变成 uint32_t 会解决问题,但我应该费心吗?我在许多广泛使用的库(如 pixman、cairo 等)中看到了相同类型的警告。

总是修复它们。编译器的矢量化器可能会使用对齐信息,并且它假定您不会调用未定义的行为。这可能会导致崩溃。

请参阅:https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65709 了解 gcc 开发人员和 L​​Z4 作者之间对这个问题的讨论。