我不清楚以下代码我做错了什么..正常编译时这是我收到的错误
blob.c:在函数'main'中: blob.c:19:14:警告:解除引用'无效 *'指针[默认启用] 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);
}
有人可以指出我正确的方向。欢迎提示。如果提示看起来太明显,我会回答。
答案 0 :(得分:2)
free((TIM*)o->x);
应该是
free(((TIM*)o)->x);
答案 1 :(得分:1)
您的陈述
free((TIM*)o->x);
失败,因为->
的优先级高于强制转换,因为o
被声明为void*
,编译器不知道如何处理它。