错位警告是否修复它们?
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_cast
到 uint32_t*
以及对它们的取消引用。我知道 memcpy
变成 uint32_t
会解决问题,但我应该费心吗?我在许多广泛使用的库(如 pixman、cairo 等)中看到了相同类型的警告。
总是修复它们。编译器的矢量化器可能会使用对齐信息,并且它假定您不会调用未定义的行为。这可能会导致崩溃。
请参阅:https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65709 了解 gcc 开发人员和 LZ4 作者之间对这个问题的讨论。
在我的自定义 .zip
解压器中,我收到如下警告:
runtime error: load of misaligned address 0x7f280ffe875a for type 'const uint32_t', which requires 4 byte alignment
原因是 reinterpret_cast
到 uint32_t*
以及对它们的取消引用。我知道 memcpy
变成 uint32_t
会解决问题,但我应该费心吗?我在许多广泛使用的库(如 pixman、cairo 等)中看到了相同类型的警告。
总是修复它们。编译器的矢量化器可能会使用对齐信息,并且它假定您不会调用未定义的行为。这可能会导致崩溃。
请参阅:https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65709 了解 gcc 开发人员和 LZ4 作者之间对这个问题的讨论。