我应该使用链表实现硬编码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;

}