C语言问题记录之Conflicting types for ‘free

问题描述:

今天在XCode中尝试练习C语言,使用malloc分配堆内存空间。但是想调用free释放堆内存空间时,Xcode编译失败,并且提示:Conflicting types for ‘free’

int main(int argc, const char * argv[]) {
    int a = 10;
    int b = 20;
    int * r = IntOperate(&b,&a, MULT);
    printf("MULT : %d \n",*r);
    r = IntOperate(&b,&a, MINS);
    printf("MINS : %d \n",*r);
    r = IntOperate(&b,&a, DIV);
    printf("DIV : %d \n",*r);
    r = IntOperate(&b,&a, ADD);
    printf("ADD : %d \n",*r);
    
    free((void*)r);  //XCODE 提示:Conflicting types for 'free
    return 0;
}

原因分析:

由于Xcode环境中 free方法的声明有多个,无法隐士导入正确的free方法实现。造成了报错

解决方案:

在使用之前,没有main方法之前,显示声明一下free方法的签名信息,便于编译器链接正确的free的实现。

//新增该方法声明
extern void free(void*);

int main(int argc, const char * argv[]) {
    int a = 10;
    int b = 20;
    int * r = IntOperate(&b,&a, MULT);
    printf("MULT : %d \n",*r);
    r = IntOperate(&b,&a, MINS);
    printf("MINS : %d \n",*r);
    r = IntOperate(&b,&a, DIV);
    printf("DIV : %d \n",*r);
    r = IntOperate(&b,&a, ADD);
    printf("ADD : %d \n",*r);
    
    free((void*)r);  //此时Xcode编译成功
    return 0;
}

本人C语言小白一名,请勿见笑 ~ ~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值