ddlovepp 发表于 2010-11-28 12:51:13

size = (size+7)&~7; /* unsigned long align the size */什么意思??

void *mmalloc(unsigned long size)
{
      ......
      size = (size+7)&~7; /* unsigned long align the size */
      ......
}

望高手教导

again 发表于 2010-11-28 13:17:55

8bytes align

gale 发表于 2010-11-28 15:48:46

就是x=((x+7)/8)*8的等效优化算式

先除8再乘8,就形成了按8对齐,+7是为了将“舍尾”变成“进位”

gale 发表于 2010-11-28 15:50:50

0 -> 0

1 -> 8
2 -> 8
3 -> 8
4 -> 8
5 -> 8
6 -> 8
7 -> 8
8 -> 8

9 -> 16
10 -> 16
11 -> 16
12 -> 16
13 -> 16
14 -> 16
15 -> 16
16 -> 16

17 -> 24
...

ddlovepp 发表于 2010-11-28 20:03:11

回复【1楼】again
-----------------------------------------------------------------------

为什么要这样处理下,不处理,就不行吗??

ddlovepp 发表于 2010-11-28 20:07:56

回复【2楼】gale
-----------------------------------------------------------------------

什么意思啊??望详细说明下。

Jigsaw 发表于 2010-11-29 07:57:31

楼主的头像好妖媚……

wxx116zh 发表于 2010-11-29 08:20:47

mark

lixivip 发表于 2010-11-29 08:28:21

回复【5楼】ddlovepp
-----------------------------------------------------------------------

对齐是为了加快内存访问速度,便于操作系统管理

lixivip 发表于 2010-11-29 08:31:35

资料在此~~~
http://www.feifanbbs.com/frame.php?frameon=yes&referer=http://www.feifanbbs.com/viewthread.php%3Ftid%3D882

ddlovepp 发表于 2010-11-29 12:45:32

回复【9楼】lixivip
-----------------------------------------------------------------------

资料看不懂啊!!!本人菜鸟啊

ddlovepp 发表于 2010-11-29 12:46:58

大侠们来抛砖引玉啊。。。。
页: [1]
查看完整版本: size = (size+7)&~7; /* unsigned long align the size */什么意思??