【问题标题】:possible casting issues with void pointervoid 指针可能的转换问题
【发布时间】:2013-10-03 05:18:00
【问题描述】:

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

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);

}

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

【问题讨论】:

标签: c casting


【解决方案1】:
free((TIM*)o->x);

应该是

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

【讨论】:

    【解决方案2】:

    你的陈述

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

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

    【讨论】:

      猜你喜欢
      • 2016-01-20
      • 2016-06-02
      • 1970-01-01
      • 1970-01-01
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-03
      相关资源
      最近更新 更多