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.
void * malloc(size_t size);
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.,
total number of data and
size of each data.
void * calloc(size_t nmemb, size_t size);
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:
Number of arguments differ.
By default, memory allocated by malloc() contains garbage values. Whereas memory allocated by calloc() contains all zeros.