我应该使用链表实现硬编码malloc和free,其中链表包含免费的节点 . 1.如果正在释放某些东西,我必须用内存检查左右位置,如果它们是空闲的,则将它们合并在一起 . 但是,在以下调用之后,我遇到以下问题 . 注意我们malloc超过x字节b / c它是x sizeof(struct Node)
Original Linked List: [2048]
Call: Linked List after Call:
malloc(50) [1974]
malloc(22) [1928]
free(50) [74]->[1928]
malloc(40) [1928]
free(22) [1974]
free(40) [2048]->[1928] *Should be just [2048]
这是我的合并功能:
node* mergeLeft(node* left, node* ptr) {
left->size += ptr->size;
return left;
}
node* mergeRight(node* right, node* ptr) {
ptr->size += right->size;
return ptr;
}