1

我不知道我在下面的代码中做错了什么。正常编译时,这是我收到的错误

blob.c:在函数'main'中:blob.c:19:14:警告:取消引用'void *'指针[默认启用] 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);

}

有人可以指点我正确的方向吗?欢迎提供提示。如果提示看起来太明显,请回答。

4

2 回答 2

2
free((TIM*)o->x);

应该

free(((TIM*)o)->x);
于 2013-10-03T05:20:42.447 回答
1

你的陈述

free((TIM*)o->x);

失败是因为->优先级高于强制转换,因为o被声明为void*编译器不知道如何处理。

于 2013-10-03T05:28:16.797 回答