iOS 記憶體位元組對齊

d_d發表於2019-05-12

記錄下蘋果實現記憶體位元組對齊的程式碼如下:

#ifdef __LP64__
#   define WORD_SHIFT 3UL
#   define WORD_MASK 7UL
#   define WORD_BITS 64
#else
#   define WORD_SHIFT 2UL
#   define WORD_MASK 3UL
#   define WORD_BITS 32
#endif

static inline uint32_t word_align(uint32_t x) {
    return (x + WORD_MASK) & ~WORD_MASK;
}
複製程式碼

對比記錄不同方案:

    func word_align(x: UInt32) -> UInt32 {
//        return (x + 7) / 8 * 8      //方案1,相對位運算效率要低
//        return ((x + 7) >> 3) << 3  //方案2,通過右移左移,低三位清0
        return (x + 7) & (~7)         //蘋果方案,另一種低三位清0方式
    }
複製程式碼

相關文章