Monday, 20 February 2012

What are the differences between malloc() and calloc()? | C Programming

Allocation of memory at the time of execution is called dynamic memory allocation. It is done using the standard library functions malloc() and calloc(). It is defined in "stdlib.h".
malloc(): used to allocate required number of bytes in memory at runtime. It takes one argument, viz. size in
bytes to be allocated.
Syntax:
void * malloc(size_t size);
Example:
a = (int*) malloc(4);
4 is the size (in bytes) of memory to be allocated.
calloc(): used to allocate required number of bytes in memory at runtime. It needs two arguments viz.,
1. total number of data and
2. size of each data.
Syntax:
void * calloc(size_t nmemb, size_t size);
Example:
a = (int*) calloc(8, sizeof(int));
Here sizeof indicates the size of the data type and 8 indicates that we want to reserve space for storing 8 integers.
Differences between malloc() and calloc() are:
1. Number of arguments differ.
2. By default, memory allocated by malloc() contains garbage values. Whereas memory allocated by calloc()contains all zeros.