hw 9.18

已分配块之需要头部,不需要脚部,带来的改变是合并时候,无法轻易的判断prevBlock 是否是一个空闲块,需要从heap_listp开始往后开始寻找到 当前块bp的上一个,判断其头部(因为你无法知道上一个到底是空闲的还是已分配的),来决定是否合并它。

代码思想如下:


static void* newCoaleace(void *bp){
	//对于下一个块的合并与原来一样,不再赘述。只考虑前一个块的合并问题

	char * tempBp = NEXTBLCK(heap_listp);
	//bp是heap_listp后的第一个块,无须合并前一个,直接返回。
	if(tempBp ==(char*)bp)
		return bp;

	//找到bp的前一个块
	while(NEXTBLCK(tempBp)!=(char*)bp){
		tempBp = NEXTBLCK(tempBp);
	}

	size_t prevAlloc = GETALLOC(HDRP(tempBp));
	//剩下的合并操作类似于书中介绍。
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值