字节对齐算法

 字节对齐是在分配内存时需要考虑的问题,两个小算法:

(1)最容易想到的算法:

unsigned int calc_align(unsigned int n,unsigned align)
{
    if ( n / align * align == n)
            return n;

        return  (n / align + 1) * align;

}

我补充一下,改成宏时#define calc_align(addr, align) (addr/align*align==addr)?addr:(addr/align+1)*align

(2)更好的算法:

unsigned int calc_align(unsigned int n,unsigned align)
{
    return ((n + align - 1) & (~(align - 1)));
}

额,这个没懂。。。

你可能感兴趣的:(职场,休闲,字节对齐)