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

2 minutos de lectura

avatar de usuario
SGE

Estoy recibiendo 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 como referencia, la estructura utilizada a mano 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 un tempList con el tamaño de 1 x fileinfo_list.

  • posible duplicado de ¿Por qué recibo una advertencia cada vez que uso malloc?

    – Oded

    1 de noviembre de 2011 a las 14:14

avatar de usuario
cnicutar

Probablemente te olvidaste de #include <stdlib.h>

  • ahh, gracias 🙂 sigo aprendiendo C, el primer programa C que viene de Java 🙂

    – SGE

    13 de agosto de 2011 a las 13:53

  • después de incluir <stdlib.h> la advertencia fue reemplazada por un error error: conflicting types for 'malloc'

    – Christos Karapapás

    5 de noviembre de 2018 a las 20:17

avatar de usuario
Omrí Barel

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

  • cuando se define como int malloc()se replica void *malloc(size_t)?

    – usuario1343318

    12/03/2014 a las 22:19


  • @ user1343318 No necesariamente, que es precisamente el motivo de la advertencia. Ej: una plataforma x64 con punteros de datos de 64 bits y 32 bits int los valores vomitarán heces de cabra, mientras que un x86 32bit-data-pointer/32bit-int aparentemente puede funcionar correctamente. Ninguno de los dos son correctos, ya que en ninguno de los dos casos el compilador es consciente de lo que malloc en realidad regresa, y asume int en respuesta.

    – WhozCraig

    13 de mayo de 2015 a las 1:54

Estás perdido #include <stdlib.h>.

avatar de usuario
santosh sahu

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

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

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

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad