gpt4 book ai didi

c - 用 C 实现 Malloc

转载 作者:行者123 更新时间:2023-12-04 10:10:02 26 4
gpt4 key购买 nike

我正在尝试在 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 中间的注释部分遇到段错误。我不知道为什么。你们能帮我解决这个问题吗?一些提示?

最佳答案

ughoavgfhw 的方向是正确的,但是转换左值是不合适的。

您可以使用:

void * tmp_p = (void *)p;
tmp_p += p->size;
p = (struct Node *)tmp_p;

关于c - 用 C 实现 Malloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13216142/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com