C 语言 - 来自不兼容指针类型的类型赋值 [默认启用]
C Language - Type assignment from incompatible pointer type [enabled by default]
我在使用此指针列表时遇到问题:
struct list{
int x;
int y;
struct list *next_ptr;
};
我有一个不幸的是每次都崩溃的函数,原因可能是这种类型分配失败。
boolean funzione_esame(struct list **ptrptr, int *number){
if(*ptrptr != NULL){
struct list *tmp;
struct list *pos;
pos=(struct list *)malloc(sizeof(struct list));
pos=&((*ptrptr)->next_ptr);
*number=1;
while(pos != NULL){
if(pos->x <= (*ptrptr)->y){
pos->x=(*ptrptr)->y;
if(pos->x >= pos->y){
tmp=pos;
pos=&(pos->next_ptr);
free(tmp);
continue;
}
}
pos=&(pos->next_ptr);
ptrptr=&((*ptrptr)->next_ptr);
*number=*number + 1;
}
return TRUE;
} else return FALSE;
}
警告在这行:
pos=&((*ptrptr)->next_ptr);
pos=&(pos->next_ptr);
我不知道我做错了什么,因为指针类型总是一样的 (struct list
)。
预先感谢您的帮助。
问题的原因[来自不兼容指针类型的类型分配]是
pos=&((*ptrptr)->next_ptr);
改为
pos= (*ptrptr)->next_ptr;
pos
是一个 struct list *
,(*ptrptr)->next_ptr
.
也是
同样适用于 pos=&(pos->next_ptr);
,更改为 pos= pos->next_ptr;
另外,前面的malloc()
也不是必须的。您立即将一些其他指针分配给 pos
,因此之前分配的内存未被使用,也不是 free
d,造成内存泄漏。
我在使用此指针列表时遇到问题:
struct list{
int x;
int y;
struct list *next_ptr;
};
我有一个不幸的是每次都崩溃的函数,原因可能是这种类型分配失败。
boolean funzione_esame(struct list **ptrptr, int *number){
if(*ptrptr != NULL){
struct list *tmp;
struct list *pos;
pos=(struct list *)malloc(sizeof(struct list));
pos=&((*ptrptr)->next_ptr);
*number=1;
while(pos != NULL){
if(pos->x <= (*ptrptr)->y){
pos->x=(*ptrptr)->y;
if(pos->x >= pos->y){
tmp=pos;
pos=&(pos->next_ptr);
free(tmp);
continue;
}
}
pos=&(pos->next_ptr);
ptrptr=&((*ptrptr)->next_ptr);
*number=*number + 1;
}
return TRUE;
} else return FALSE;
}
警告在这行:
pos=&((*ptrptr)->next_ptr);
pos=&(pos->next_ptr);
我不知道我做错了什么,因为指针类型总是一样的 (struct list
)。
预先感谢您的帮助。
问题的原因[来自不兼容指针类型的类型分配]是
pos=&((*ptrptr)->next_ptr);
改为
pos= (*ptrptr)->next_ptr;
pos
是一个 struct list *
,(*ptrptr)->next_ptr
.
同样适用于 pos=&(pos->next_ptr);
,更改为 pos= pos->next_ptr;
另外,前面的malloc()
也不是必须的。您立即将一些其他指针分配给 pos
,因此之前分配的内存未被使用,也不是 free
d,造成内存泄漏。