【问题标题】:How to split a node in a linked list say into chunks of 8 byte?如何将链表中的节点拆分为 8 字节的块?
【发布时间】:2013-10-20 17:55:37
【问题描述】:
考虑到我有一个 4MB 的节点(作为一个只有一个节点的完整链表),我如何将我的节点分成更小的块(节点),每个块只有 8 个字节?
head = (list_t*) ptr;
head->size = 4MB;
head->next = NULL;
P.S.:我正在尝试自己实现 malloc,这就是我尝试使用链表初始化内存的原因。
【问题讨论】:
标签:
c
memory
memory-management
linked-list
malloc
【解决方案1】:
您想使用这样的指针算法将偏移量连续 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;
如果您仍然卡住,我可以发布一个更详细的示例。
您是在编写一个管理自己内存的链表(在这种情况下,您可能还需要一个数据指针),还是使用链表的内存管理器(在这种情况下,您可能希望它分配更多的内存比它自己使用;-))?