2

考虑到我有一个 4MB 的节点(作为一个只有一个节点的完整链表),我如何将我的节点分成更小的块(节点),每个块只有 8 个字节?

head = (list_t*) ptr;
head->size = 4MB;
head->next = NULL;

PS:我正在尝试自己实现 malloc,这就是我尝试使用链表初始化内存的原因。

4

1 回答 1

3

您想使用如下指针算法将偏移量连续 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;

如果您仍然卡住,我可以发布更详细的示例。

您是在编写一个管理自己内存的链表(在这种情况下,您可能还需要一个数据指针),还是使用链表的内存管理器(在这种情况下,您可能希望它分配的内存比它使用的多一点本身;-))?

于 2013-10-12T20:43:17.847 回答