关于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 则不会报错,也不会报警。 gcc4.4.3更严格了,无聊。 回复 1# futurecho
#include <stdlib.h> gcc4.4.3更严格了,无聊。
prolj 发表于 2010-05-04 13:10 http://linux.chinaunix.net/bbs/images/common/back.gif
是,我承认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的时候有什么特别的地方! 是不是gnu的扩展?
另外,你没有加上头文件,没有函数原型,怎么判断你的代码是错的啊。 #include <stdlib.h>之后还可以么? free 带两个参数么? free(p,sizeof(int));?
不是只要free(p)么 函数free 调用形式: free(void*ptr); 功能:释放ptr所指向的一块内存空间
页:
[1]