Différence entre malloc et calloc?

Quelle est la différence entre faire: ptr = (char **) malloc (MAXELEMS * sizeof(char *)); ou: ptr = (char **) calloc (MAXELEMS, sizeof(char*)); Quand est-ce une bonne idée d'utiliser calloc sur malloc ou vice