考虑到我有一个 4MB 的节点(作为一个只有一个节点的完整链表),我如何将我的节点分成更小的块(节点),每个块只有 8 个字节?
head = (list_t*) ptr;
head->size = 4MB;
head->next = NULL;
PS:我正在尝试自己实现 malloc,这就是我尝试使用链表初始化内存的原因。
考虑到我有一个 4MB 的节点(作为一个只有一个节点的完整链表),我如何将我的节点分成更小的块(节点),每个块只有 8 个字节?
head = (list_t*) ptr;
head->size = 4MB;
head->next = NULL;
PS:我正在尝试自己实现 malloc,这就是我尝试使用链表初始化内存的原因。
您想使用如下指针算法将偏移量连续 8 个字节进一步移入其中:
list_t *next;
next = head + 1; /* Note that this implicitly means "1 * sizeof(list_t)" */
next->size = head->size - sizeof(list_t);
next->next = NULL;
head->next = next;
如果您仍然卡住,我可以发布更详细的示例。
您是在编写一个管理自己内存的链表(在这种情况下,您可能还需要一个数据指针),还是使用链表的内存管理器(在这种情况下,您可能希望它分配的内存比它使用的多一点本身;-))?