malloc - asignar memoria dinámicamente
#include <stdlib.h>
void *malloc(size_t size);
Piense en void * como el significado de la dirección de cualquier tipo de valor en la memoria. Piense en size_t como un long.
Esta función asigna dinámicamente size bytes contiguos de memoria (en el montón) que se pueden usar para almacenar cualquier tipo de valores.
Esta función devuelve la dirección del primer byte de memoria asignada o NULL en casos de error (como cuando no hay suficiente memoria disponible).
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char *s = malloc(4);
if (s == NULL)
{
return 1;
}
s[0] = 'h';
s[1] = 'i';
s[2] = '!';
s[3] = '\0';
printf("%s\n", s);
free(s);
return 0;
}