C99中,函数free的隐式声明无效

28

在 xcode 5 中,我收到了这个警告:

"在 c99 中隐式声明 free 函数是无效的"

如果我不能使用 free() 函数,应该如何释放我的 C 结构?


10
你是否包含了 <stdlib.h> 库? - Michael
你是否使用malloc或calloc函数为结构体声明内存? - askmish
@ Michael:我也遇到了同样的错误,并尝试包含<stdlib.h>,但错误并没有消失。 - lee
2个回答

69

你应该包含 <stdlib.h>


1
这个回答很糟糕,如果我可以这么说的话... - Some programmer dude

9
你收到这个警告是因为你在调用函数之前没有先声明它,因此编译器不知道该函数的存在。
所有函数在被调用之前都需要声明,C语言中没有“内置”函数。
虽然free()是一个在标准库中定义的函数,但它仍然不是内置函数,你必须有一个原型声明它。
要找出哪个头文件包含了原型,可以尝试搜索“man free”,并查找Linux手册页。在靠近顶部的位置,它说:
#include <stdlib.h>

void *malloc(size_t size);
void free(void *ptr);
void *calloc(size_t nmemb, size_t size);
void *realloc(void *ptr, size_t size);

这告诉你,为了使用列出的函数,你应该添加:
#include <stdlib.h>

添加到您的源代码中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接