关于gcc4.4.3的一个问题
基本环境: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 则不会报错,也不会报警。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
函数free 调用形式: free(void*ptr); 功能:释放ptr所指向的一块内存空间
free(p,sizeof(int));?
不是只要free(p)么
free 带两个参数么?
是不是gnu的扩展?
另外,你没有加上头文件,没有函数原型,怎么判断你的代码是错的啊。 #include <stdlib.h>之后还可以么?
是,我承认gcc4.4.3相比于以前的版本,语法检查更加严格了,但下面还有个例子:
1.c:
void aaaa(int x)
{
printf("%dn",x);
}
2.c:
main()
{
aaaa(2,3);
}
使用gcc4.4.3编译1.c和2.c,不会报任何错,但事实上程序中的函数aaaa在调用的时候多了个参数。
所以有点疑惑,是不是gcc在处理free的时候有什么特别的地方!
回复 1# futurecho
#include <stdlib.h>
gcc4.4.3更严格了,无聊。