Declaración implícita incompatible de la función incorporada 'malloc'

155

Recibo este error:

advertencia: declaración implícita incompatible de la función incorporada 'malloc'

Estoy tratando de hacer esto:

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

Solo para la referencia, la estructura utilizada es:

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

No veo nada malo en lo que he hecho. Solo estoy creando una tempListcon el tamaño de 1 x fileinfo_list.

SGE
fuente

Respuestas:

340

Probablemente olvidó incluir <stdlib.h>.

cnicutar
fuente
1
ahh gracias :) todavía estoy acostumbrado a C, el primer programa C viene de Java :)
SGE
después de incluir <stdlib.h>la advertencia fue reemplazada por un errorerror: conflicting types for 'malloc'
Christos Karapapas
46

Usted necesita #include <stdlib.h>. De lo contrario, se define como int malloc()incompatible con el tipo incorporado void *malloc(size_t).

Omri Barel
fuente
cuando se define como int malloc(), ¿se replica void *malloc(size_t)?
user1343318
@ user1343318 No necesariamente, que es precisamente el motivo de la advertencia. Por ejemplo: una plataforma x64 con punteros de datos de 64 bits y intvalores de 32 bits vomitarán heces de cabra, mientras que un puntero de datos de 32 bits x86 / 32 bits intaparentemente puede funcionar correctamente. Ninguno de los dos es correcto, ya que en ninguno de los casos el compilador es consciente de lo que mallocrealmente regresa y asume inten respuesta.
WhozCraig
15

Que se está perdiendo #include <stdlib.h>.

Antti
fuente
4

El archivo stdlib.h contiene la información del encabezado o el prototipo de las funciones malloc, calloc, realloc y free.

Entonces, para evitar esta advertencia en ANSI C, debe incluir el archivo de encabezado stdlib.

santosh sahu
fuente
-4

La única solución para tales advertencias es incluir stdlib.h en el programa.

usuario3828152
fuente