Difference Between Malloc and Calloc
There are two differences. First, is in the number of arguments.
Malloc() takes a single argument (memory required in bytes),
while calloc() needs two arguments (number of variables to
allocate memory, size in bytes of a single variable). Secondly,
malloc() does not initialize the memory allocated, while
calloc() initializes the allocated memory to ZERO.
Here are more opinions and answers from FAQ Farmers:
* The difference between malloc and calloc are: 1. malloc()
allocates byte of memory, whereas calloc()allocates block of
memory.
* Calloc(m, n) is essentially equivalent to p = malloc(m *
n); memset(p, 0, m * n); The zero fill is all-bits-zero, and
does not therefore guarantee useful null pointer values (see
section 5 of this list) or floating-point zero values. Free is
properly used to free the memory allocated by calloc.
* Malloc(s); returns a pointer for enough storage for an
object of s bytes. Calloc(n,s); returns a pointer for enough
contiguous storage for n objects, each of s bytes. The storage
is all initialized to zeros.
* Simply, malloc takes a single argument and allocates bytes
of memory as per the argument taken during its invocation. Where
as calloc takes two aguments, they are the number of variables
to be created and the capacity of each vaiable (i.e. the bytes
per variable).
* I think calloc can allocate and initialize memory, if the
asked memory is available contiguously where as malloc can
allocate even if the memory is not available contiguously but
available at different locations.