免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3020 | 回复: 7
打印 上一主题 下一主题

关于gcc4.4.3的一个问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-05-04 11:33 |只看该作者 |倒序浏览
基本环境:x86-64上使用gcc4.4.3
编译如下的程序xx.c:
main()
{
    int *p;
    p=(int *)malloc(sizeof(int));
    free(p,sizeof(int));
}
编译:gcc -c xx.c
报错:too many arguments to function "free"
如果使用gcc 4.1.2 则不会报错,也不会报警。

论坛徽章:
0
2 [报告]
发表于 2010-05-04 13:10 |只看该作者
gcc4.4.3更严格了,无聊。

论坛徽章:
0
3 [报告]
发表于 2010-05-04 15:49 |只看该作者
回复 1# futurecho


    #include <stdlib.h>

论坛徽章:
0
4 [报告]
发表于 2010-05-05 14:44 |只看该作者
gcc4.4.3更严格了,无聊。
prolj 发表于 2010-05-04 13:10



    是,我承认gcc4.4.3相比于以前的版本,语法检查更加严格了,但下面还有个例子:
1.c:

void aaaa(int x)
{
   printf("%d\n",x);
}

2.c:
main()
{
    aaaa(2,3);
}

使用gcc4.4.3编译1.c和2.c,不会报任何错,但事实上程序中的函数aaaa在调用的时候多了个参数。
所以有点疑惑,是不是gcc在处理free的时候有什么特别的地方!

论坛徽章:
0
5 [报告]
发表于 2010-05-05 15:29 |只看该作者
是不是gnu的扩展?
另外,你没有加上头文件,没有函数原型,怎么判断你的代码是错的啊。 #include <stdlib.h>之后还可以么?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2010-05-10 15:04 |只看该作者
free 带两个参数么?

论坛徽章:
0
7 [报告]
发表于 2010-05-13 22:42 |只看该作者
free(p,sizeof(int));?

不是只要free(p)么

论坛徽章:
0
8 [报告]
发表于 2010-05-15 23:19 |只看该作者
函数free 调用形式: free(void*ptr); 功能:释放ptr所指向的一块内存空间
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP