calloc Function

Dynamically allocate and clear a block of memory from the heap for an array of objects.




void * calloc(size_t nelem, size_t size);


number of array elements
size of each element

Return Value

Returns a pointer to the allocated space if successful; otherwise, returns a null pointer.


Although the memory block allocated and whose address is returned will be large enough to hold an object with the specified size, the memory required to allocate that block might be larger than the requested size due to alignment of the allocated memory, and/or additional objects that are used to manage the heap.

Unlike malloc, the calloc function initializes the memory it allocates to 0.

See your MPLAB XC compiler User's Guide for more information on dynamic memory allocation.


/* This program allocates memory for the      */
/* array 'i' of long integers and initializes */
/* them to zero.                              */

#include <stdio.h>
#include <stdlib.h>

int main(void)
  int x;
  long *i;

  i = (long *)calloc(5, sizeof(long));
  if (i != NULL)
    for (x = 0; x < 5; x++)
      printf("i[%d] = %ld\n", x, i[x]);
    printf("Cannot allocate memory\n");

Example Output

i[0] = 0
i[1] = 0
i[2] = 0
i[3] = 0
i[4] = 0