我不知道下面的代码做错了什么..当正常编译时,这是我收到的错误
blob.c:在函数“main”中:
blob.c:19:14:警告:取消引用“void”
*'pointer[enabled by default]blob.c:19:14:错误:请求成员'x'不是结构或联合
#include<stdio.h>
#include<stdlib.h>
typedef struct {
int*x;
}TIM;
main(){
void*o;
TIM * a;
a=(TIM*)malloc(sizeof(TIM));
a->x=(int*)malloc(sizeof(int));
*(a->x)=10;
o=(void*)a;
free((TIM*)o->x);
free((TIM*)o);
}
有人能给我指一个正确的方向吗?如果提示太明显的话,请给出完整的答案。
最佳答案
你的陈述
free((TIM*)o->x);
失败,因为
->
的优先级高于强制转换,因为o
声明为void*
编译器不知道如何处理。关于c - 空指针可能导致的转换问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19151310/