There is no important difference between the two other than the number of arguments and the zero fill. Malloc: Allocates a block of size bytes of memory, returning a pointer to the beginning of the block. The content of the newly allocated block of memory is not initialized, remaining with indeterminate values. Calloc: Allocate space for array in memory Allocates a block of memory for an array of num elements, each of them size bytes long, and initializes all its bits to zero. The effective result is the allocation of an zero-initialized memory block of (num * size) bytes.