calloc funciona igual que malloc, lo quye hace es reservar bloques de memoria.
La forma de llamar a calloc es:
tipo *puntero;
puntero = (tipo*)calloc(numero elementos, tamaño de cada elemento)
Ejemplo:
#define N 5
double *pd;
pd = (double*)calloc(N, sizeof(double));
/* Se reserva memoria para 5 datos de tipo double, cada double requiere 8 bytes por lo tanto se reservan 5*8 bytes, es decir, 40 bytes de la memoria para almacenar dichos numeros*/
La funcion free() libera la memoria usada anteriormente reservada por malloc, calloc, realloc o cualquier otro. Por ejemplo si ya no se necesita más el espacio reservado anteriormente para almacenar los 5 datos de tipo double, lo que se debe hacer es:
free(puntero);
en este ejemplo seria:
free(pd);
malloc hace lo mismo que calloc, asignar bloques de memoria:
tipo *puntero;
puntero = (tipo*)malloc(tamaño en bytes);
Ejemplo:
Se quiere reservar espacio en la memoria para 10 datos de tipo float, cada float requiere de 4 bytes, pero si eso no lo sabes puedes utilizar el operador sizeof():
float *p; /* se tiene que decclarar el puntero*/
p = (float*)malloc(sizeof(10*float));
con este ejemplo se acaba de reservar memoria para 10 datos de tipo float, Se tiene que hacer la conversion de tipo (*float) pues lo que devuelve malloc es tipo void*