Chinaunix首页 | 论坛 | 博客
  • 博客访问: 158324
  • 博文数量: 40
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 355
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-27 18:05
文章分类
文章存档

2011年(1)

2010年(9)

2009年(16)

2008年(14)

我的朋友

分类: C/C++

2010-02-08 22:27:54

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

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

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

        return  (n / align + 1) * align;

}

(2)更好的算法:

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

内核中也有 #define ALIGN(x,a) (((x)+(a)-1)&~((a)-1))


阅读(1314) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~