C <stdlib.h> - calloc() Function
The C <stdlib.h> calloc() function is used to allocate a block of memory for an array of num elements of size bytes long, and initializes all its bits to zero. If allocation succeeds, it returns a pointer to the lowest (first) byte of newly allocated memory.
If size is zero, the behavior of the function is implementation-defined (it may or may not be a null pointer), but the returned pointer shall not be dereferenced, and should be passed to free() to avoid memory leaks.
Syntax
void* calloc (size_t num, size_t size);
Parameters
num |
Specify number of elements to allocate. size_t is an unsigned integral type. |
size |
Specify size of each element. size_t is an unsigned integral type. |
Return Value
On success, returns a pointer to the lowest (first) byte of newly allocated memory. The type of this pointer is always void*, which can be cast to the desired type of data pointer in order to be dereferenceable. On failure, returns a null pointer.
Example:
The example below shows the usage of <stdlib.h> calloc() function.
#include <stdio.h> #include <stdlib.h> int main (){ //allocating memory for array of 5 int int *p1 = (int*) calloc(5, sizeof(int)); //another way of doing the same int *p2 = (int*) calloc(1, sizeof(int[5])); //another way of doing the same int *p3 = (int*) calloc(5, sizeof *p3); //displaying the array for(int i=0; i<5; i++) printf("p1[%d] = %d\n", i, p1[i]); //deallocating previously allocated memory free(p1); free(p2); free(p3); return 0; }
The output of the above code will be:
p1[0] = 0 p1[1] = 0 p1[2] = 0 p1[3] = 0 p1[4] = 0
❮ C <stdlib.h> Library