首先,先了解下书中所介绍的采用隐式空闲链表的简单适配器实现贴出来供大家参考,在Ubandu下编译成功。
#include <stdlib.h>
#include <unistd.h>
#define WSIZE 4
#define DSIZE 8
#define CHUNKSIZE (1<<12)
#define MAX(x,y) ((x)>(y)?(x):(y))
#define PACK(size,alloc) ((size) | (alloc))
#define GET(p) (*(unsigned int *)(p))
#define PUT(p,val) (*(unsigned int *)(p) = (val))
#define GETSIZE(p) (GET(p)& ~0x7)
#define GETALLOC(p) (GET(p) & 0x1)
#define HDRP(p) ((char*)(p)-WSIZE)
#define FTRP(p) ((char*)(p) + GETSIZE(HDRP(p)) - DSIZE )
#define NEXTBLCK(p) ((char*)(p) + GETSIZE(HDRP(p)))
#define PREVBLCK(p) ((char*)(p) - GETSIZE( ((char*)(p) - DSIZE)))
static char* heap_listp;
static char* last_listp;
static void* coaleace(void* bp){
size_t nextAlloc = GETALLOC(HDRP(NEXTBLCK(bp)));
size_t prevAlloc = GETALLOC(FTRP(PREVBLCK(bp)));
size_t size = GETSIZE(HDRP(bp));
if(nextAlloc && prevAlloc)
re