Si uso malloc
en mi código:
int *x = malloc(sizeof(int));
Recibo esta advertencia de gcc
:
new.c:7: warning: implicit declaration of function ‘malloc’
new.c:7: warning: incompatible implicit declaration of built-in function ‘malloc’
Necesitas agregar:
#include <stdlib.h>
Este archivo incluye la declaración de la función incorporada malloc
. Si no lo hace, el compilador cree que desea definir su propia función nombrada malloc
y le advierte porque:
int
, lo cual no es compatible con la función incorporada in malloc
, que toma size_t
ay devuelve a void*
).
No lo has hecho
#include <stdlib.h>
.fuente
Debe incluir el archivo de encabezado que declara la función, por ejemplo:
Si no incluye este archivo de encabezado, el compilador no conoce la función. Entonces lo ve como no declarado.
fuente
Adquiera el hábito de buscar sus funciones como ayuda.
La mayor parte de la ayuda para C se basa en las páginas del manual de Unix.
Utilizando :
da resultados bastante útiles.
Buscar en Google
man malloc
te mostrará lo que quiero decir.En Unix también obtienes a propósito para cosas que están relacionadas.
fuente
#include <stdlib.h>
en la sinopsis significa que tiene que escribir eso en su programa.Además de las otras muy buenas respuestas, me gustaría hacer un pequeño detalle y cubrir algo que aún no se discute en las otras respuestas.
Cuando estás en Linux, para usar
malloc()
en tu código,En realidad, no tienes que hacerlo
#include <stdlib.h>
.(Aunque el uso de
stdlib.h
es muy común y probablemente todos los programas que no sean de juguete deberían incluirlo de cualquier manera porque proporciona una amplia gama de funciones y macros de biblioteca estándar de C útiles)También podrías en su
#include <malloc.h>
lugar.Pero tenga en cuenta que el uso de
malloc.h
está obsoleto y hace que su código no sea portátil. Si desea utilizarmalloc()
, debe hacerlo siempre y siempre (excepto por razones explícitas para hacer lo contrario)#include <stdlib.h>
.Las razones por las cuales se explican mejor en las respuestas a esta pregunta:
diferencia entre <stdlib.h> y <malloc.h>
fuente