##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# calloc

From cppreference.com
< c‎ | memory

Defined in header `<stdlib.h>` |  |
void* calloc( size_t num, size_t size ); |  |

Allocates memory for an array of `num` objects of size `size` and zero-initializes it.

If allocation succeeds, returns a pointer to the lowest (first) byte in the allocated memory block that is suitably aligned for any object type.

If `size` is zero, the behavior is implementation defined (null pointer may be returned, or some non-null pointer may be returned that may not be used to access storage)

### [edit] Parameters

num | - | number of objects
size | - | size of each object

### [edit] Return value

Pointer to the beginning of newly allocated memory or NULL if error has occurred. The pointer must be deallocated with free().

### [edit] Notes

Due to the alignment requirements, the number of allocated bytes is not necessarily equal to `num*size`.

### [edit] Example

Run this code

    #include <stdio.h>    /* printf             */
    #include <stdlib.h>   /* calloc, free, exit */

    int main () {

        /* Allocate an array of four integers. */
        /* Initialize all elements to 0.       */
        int *A = calloc(4,sizeof(int));
        if (A == NULL) {
           printf("calloc() failed in file %s at line # %d", __FILE__,__LINE__);
           exit(1);
        }

        /* Print one of the array elements. */
        printf("A[3] = %d\n", A[3]);

        /* Deallocate array A. */
        free(A);
        return 0;
    }

Output:

    A[3] = 0

### [edit] See also

C++ documentation for calloc

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=c/memory/calloc&oldid=67264"