2
考虑到我有一个4MB节点(作为一个完整的链表,它只有一个节点),我怎样才能将我的节点分成只有8个字节的小块(节点)?如何将链接列表中的节点分成8个字节的块?
head = (list_t*) ptr;
head->size = 4MB;
head->next = NULL;
P.S .:我试图自己实现malloc,这就是为什么我试图使用链表来初始化内存。
考虑到我有一个4MB节点(作为一个完整的链表,它只有一个节点),我怎样才能将我的节点分成只有8个字节的小块(节点)?如何将链接列表中的节点分成8个字节的块?
head = (list_t*) ptr;
head->size = 4MB;
head->next = NULL;
P.S .:我试图自己实现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;
如果你还卡住我可以发布一个更详细的例子。
你正在编写一个链接列表来管理自己的内存(在这种情况下,你可能还需要一个数据指针),或者使用链接列表的内存管理器(在这种情况下,你可能希望它分配更多内存比它使用本身;-))?
'C'或'C++'?选择一个 – P0W
@ P0W代码是C. –