Declaração implícita incompatível da função incorporada 'malloc'

155

Estou recebendo este erro:

aviso: declaração implícita incompatível da função incorporada 'malloc'

Estou tentando fazer isso:

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

Apenas para referência, a estrutura usada é:

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

Não vejo nada de errado com o que fiz. Estou apenas criando um tempListcom o tamanho de 1 x fileinfo_list.

SGE
fonte

Respostas:

340

Você provavelmente esqueceu de incluir <stdlib.h>.

cnicutar
fonte
1
ahh obrigado :) ainda pegando o jeito C, primeiro programa C proveniente de java :)
SGE
depois de incluir <stdlib.h>o aviso foi substituído por um erroerror: conflicting types for 'malloc'
Christos Karapapas
46

Você precisa #include <stdlib.h>. Caso contrário, é definido como int malloc()incompatível com o tipo interno void *malloc(size_t).

Omri Barel
fonte
quando definido como int malloc(), ele se replica void *malloc(size_t)?
user1343318
@ user1343318 Não necessariamente, que é precisamente o motivo do aviso. Ex: uma plataforma x64 com ponteiros de dados de 64 bits e intvalores de 32 bits vomitará fezes de cabra, enquanto um x86 de 32 bits-ponteiro de dados / 32 bits- intpode aparentemente funcionar corretamente. Nenhum dos dois está correto, pois em nenhum dos casos o compilador está ciente do que mallocrealmente retorna e assume intem resposta.
WhozCraig
15

Você está desaparecido #include <stdlib.h>.

Antti
fonte
4

O arquivo stdlib.h contém as informações de cabeçalho ou protótipo das funções malloc, calloc, realloc e free.

Portanto, para evitar esse aviso no ANSI C, você deve incluir o arquivo de cabeçalho stdlib.

santosh sahu
fonte
-4

A única solução para esses avisos é incluir stdlib.h no programa.

user3828152
fonte