我不知道下面的代码做错了什么..当正常编译时,这是我收到的错误
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/

10-10 01:45