作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先,我的程序的目标是使用伙伴分配方案创建我自己的 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/
我是一名优秀的程序员,十分优秀!