Syntax
#include <stdlib.h> /* also in <malloc.h> */ void *calloc(size_t num, size_t size);Description
Heap-specific versions of this function (_ucalloc) are also available. calloc always allocates memory from the default heap. You can also use the debug version of calloc, _debug_calloc, to debug memory problems.
calloc returns a pointer to the reserved space. The storage space to which the return value points is suitably aligned for storage of any type of object. To get a pointer to a type, use a type cast on the return value. The return value is NULL if there is not enough storage, or if num or size is 0.
This example prompts for the number of array entries required and then reserves enough space in storage for the entries. If calloc is successful, the example prints out each entry; otherwise, it prints out an error.
#include <stdio.h> #include <stdlib.h> int main(void) { long *array; /* start of the array */ long *index; /* index variable */ int i; /* index variable */ int num; /* number of entries of the array */ printf("Enter the size of the array\n"); scanf("%i", &num); /* allocate num entries */ if ((index = array = calloc(num, sizeof(long))) != NULL) { for (i = 0; i < num; ++i) /* put values in array */ *index++ = i; /* using pointer notation */ for (i = 0; i < num; ++i) /* print the array out */ printf("array[ %i ] = %i\n", i, array[i]); } else { /* out of storage */ perror("Out of storage"); abort(); } return 0; /**************************************************************************** The output should be similar to : Enter the size of the array 3 array[ 0 ] = 0 array[ 1 ] = 1 array[ 2 ] = 2 ****************************************************************************/ }Related Information