gpt4 book ai didi

C错误: Initialization From Incompatible Pointer Type

转载 作者:行者123 更新时间:2023-11-30 15:15:11 25 4
gpt4 key购买 nike

首先,我的程序的目标是使用伙伴分配方案创建我自己的 malloc。但是,当我编译代码时,我收到了来自不兼容指针类型错误的初始化。我对这到底意味着什么以及如何解决它感到困惑。以下是发生此错误的函数的一小段代码:

node *fList[26] = {NULL};

void *divider(int index, int baseCase) {

node *temporary = fList[index + 1];

int size = ((1 << (index + 6)) / 2);
node *toSplit =(char *)temporary + size; //where error occurs

if(temporary->next != NULL) {
fList[index+1] = temporary->next;
temporary->next= NULL;
fList[index+1]->previous = NULL;
}
else{
fList[index+1]=NULL;
}

temporary->next = toSplit;
toSplit->previous = temporary;

if(fList[index] != NULL){
toSplit->next = fList[index];
fList[index]->previous=toSplit;
}
else{
toSplit->next = NULL;
}

fList[index] = temporary;
temporary->previous=NULL;

temporary->header = index+5;
toSplit->header = index+5;


if(fList[index]->header == baseCase+5){
fList[index]->header |=128;
void *tmp = fList[index];
fList[index]=fList[index]->next;
if(fList[index]!=NULL)
{
fList[index]->previous=NULL;
}
return tmp;
}
else{
divider(index-1,baseCase);
}
}

最佳答案

错误几乎说明了这一点:您已将 temporary 转换为与您尝试分配给它的变量 node 不同类型的指针。

对于不兼容部分,结构在内存中的位置通常有规则(地址通常必须是 4 或 8 的倍数),但是 char 没有如此限制,因此您可以在 node 不能出现的位置放置 char

至于修复它:将其转换为正确的类型,并确保为您的节点生成有效的地址。

关于C错误: Initialization From Incompatible Pointer Type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33715508/

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