userpro / MemoryPool

一个极简内存池实现
MIT License
276 stars 96 forks source link

关于MP_ALIGN_SIZE实现的改进 #17

Closed kakaxi3019 closed 5 days ago

kakaxi3019 commented 6 days ago

项目中对于字节对齐的实现如下: #define MP_ALIGN_SIZE(_n) (_n + sizeof(long) - ((sizeof(long) - 1) & (_n))) 看了下这个实现如果遇到_n已经是sizeof(long)的倍数了,则还会为其加上sizeof(long)字节,感觉这里是否可以稍作修改。 一个可选的方法如下:

#include <cstdint>

#define MP_ALIGN_SIZE(_n)       \
        (((uintptr_t) (_n) + ((sizeof(long)) - 1)) & ~((uintptr_t) ((sizeof(long)) - 1)))
userpro commented 5 days ago

thanks