Malloc-lab是针对CSAPP中对应的第九章9.9部分的内容,在这个实验中,我们需要实现自己的动态内存申请器。具体的要求可以参考writeup。
lab的具体内容可以在官网中下载,所有的lab代码在GitHub上。
1. 书本代码
其实书本上已经实现了部分的代码,我们首先将书本的代码实现,看看分数是多少?有关分数的评定,下载的文件中并没有给到,大家也可以去traces中拿到相关trace文件,以作评分用。
1 | /* |
分数如下:
1 | $ ./mdriver -t ./traces -V |
2. 用next_fit代替first_fit
我们用pre_listp指针指向上次分配的点,这样就不用每次从头去找空闲块了,整体代码如下:
1 | /* |
分数如下,一下子提高到了83分。
1 | $ ./mdriver -t ./traces -V |
3. 分离的空闲链表
要想继续提高分配器的性能,需要用到课本内容9.9.13-9.9.14的知识。我们需要构建一个分离空闲链表,具体参考的是CS:APP3e 深入理解计算机系统_3e MallocLab实验。具体代码如下:
1 | /* |
跑分如下:
1 | $$ ./mdriver -t traces -V |