我正在尝试在C项目中手动实现Malloc。
以下是我的代码:
void *Mem_Alloc(int size) {
struct Node *p, *prevp = head;
if (fitPolicy == P_BESTFIT) {
}
if (fitPolicy == P_FIRSTFIT) {
for (p = prevp->next; ;prevp = p, p = p->next) {
if (p->size >= size) {
if (p->size == size)
prevp->next = p->next;
else {
p->size -= size;
p += p->size;
// p->size = size;
}
head = prevp;
return (void *)(p+1);
}
if (p == head) {
return NULL;
}
}
}
if (fitPolicy == P_WORSTFIT) {
}
return NULL;
}
基本上,我在另一个名为Mem_Init
的方法中调用mmap
; 然后,变量head
指向返回的内存映射。
在Mem_Alloc
的中间部分的注释部分总是导致段错误。 我不知道原因。 你们能帮我吗? 一些提示?
p->size = the_size_left_in_the_block
。 - SwiftMango