C错误:初始化来自不兼容的指针类型



首先,我的程序的目标是使用好友分配方案创建我自己的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

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

相关内容

  • 没有找到相关文章

最新更新