Diferença entre malloc e calloc?

Qual é a diferença entre doing: ptr = (char **) malloc (MAXELEMS * sizeof(char *)); ou: ptr = (char **) calloc (MAXELEMS, sizeof(char*)); Quando é uma boa ideia usar calloc sobre malloc ou