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.


Respostas:


340

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


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).


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>.


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.


-4

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.