内置函数“malloc”的隐式声明不兼容

Incompatible implicit declaration of built-in function ‘malloc’

提问人:SGE 提问时间:8/13/2011 最后编辑:Peter MortensenSGE 更新时间:2/20/2021 访问量:222897

问:

我收到此错误:

警告:内置函数“malloc”的隐式声明不兼容

我正在尝试这样做:

fileinfo_list* tempList = malloc(sizeof(fileinfo_list));

仅供参考,手头使用的结构是:

typedef struct {
    fileinfo** filedata;
    size_t nFiles;
    size_t size;
    size_t fileblock;
} fileinfo_list;

我不认为我所做的事情有什么问题。我只是创建一个大小为 1 x 的 .tempListfileinfo_list

c 结构 malloc

答:

401赞 cnicutar 8/13/2011 #1

你可能忘记了#include <stdlib.h>

评论

1赞 SGE 8/13/2011
啊,谢谢:)仍然掌握 C 的窍门,第一个来自 java 的 C 程序:)
1赞 Christos Karapapas 11/6/2018
包含警告后,被错误取代<stdlib.h>error: conflicting types for 'malloc'
16赞 Antti 8/13/2011 #2

你错过了.#include <stdlib.h>

48赞 Omri Barel 8/13/2011 #3

你需要.否则,它被定义为与内置类型不兼容。#include <stdlib.h>int malloc()void *malloc(size_t)

评论

0赞 user1343318 3/13/2014
当它被定义为 时,它会复制吗?int malloc()void *malloc(size_t)
0赞 WhozCraig 5/13/2015
@user1343318 不一定,这正是警告的原因。例如:具有 64 位数据指针和 32 位值的 x64 平台会呕吐山羊粪便,而 x86 32 位数据指针/32 位似乎可以正常工作。两者都不正确,因为在这两种情况下,编译器都不知道实际返回的内容,并假设作为响应。intintmallocint
-4赞 user3828152 7/11/2014 #4

此类警告的唯一解决方案是在程序中包含 stdlib.h。

5赞 santosh sahu 7/25/2014 #5

stdlib.h 文件包含 malloc、calloc、realloc 和 free 函数的头信息或原型。

因此,为了避免在 ANSI C 中出现此警告,应包含 stdlib 头文件。