2013-10-12 16 views
2

考虑到我有一个4MB节点(作为一个完整的链表,它只有一个节点),我怎样才能将我的节点分成只有8个字节的小块(节点)?如何将链接列表中的节点分成8个字节的块?

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

P.S .:我试图自己实现malloc,这就是为什么我试图使用链表来初始化内存。

+2

'C'或'C++'?选择一个 – P0W

+0

@ P0W代码是C. –

回答

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; 

如果你还卡住我可以发布一个更详细的例子。

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