calloc()
Allocate space for an array
Synopsis:
#include <stdlib.h> void* calloc ( size_t n, size_t size );
Arguments:
- n
- The number of array elements to allocate.
- size
- The size, in bytes, of one array element.
Library:
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
Description:
The calloc() function allocates space from the heap for an array of n objects, each of size bytes, and initializes them to 0. Use free() or realloc() to free the block of memory.
If n or size is zero, the default behavior is to return a non-NULL pointer that's valid only to a corresponding call to free() or realloc(). Don't assume that this pointer points to any valid memory. You can control this behavior via the MALLOC_OPTIONS environmental variable; if the value of MALLOC_OPTIONS contains a V, calloc() returns a NULL pointer. This environment variable also affects malloc() and realloc(). This is known as the System V behavior.
Returns:
A pointer to the start of the allocated memory, or NULL if an error occurred (errno is set).
Errors:
- ENOMEM
- Not enough memory.
- EOK
- No error.
Examples:
#include <stdlib.h> #include <stdio.h> int main( void ) { char* buffer; buffer = (char* )calloc( 80, sizeof(char) ); if( buffer == NULL ) { printf( "Can't allocate memory for buffer!\n" ); return EXIT_FAILURE; } free( buffer ); return EXIT_SUCCESS; }
Environment variables:
- MALLOC_OPTIONS
- Control the way calloc(), malloc(), and
realloc() behave if you specify a size of 0 (or a value of
0 for the n argument to calloc()).
The V (System V) and R
(use the realloc() behavior of QNX Neutrino 6.4.0
and earlier) columns below indicate how the
functions behave if the value of MALLOC_OPTIONS
includes that letter:
Function Default V R calloc(n, 0) Non-NULL NULL No effect malloc(0) Non-NULL NULL No effect realloc(NULL, 0) Non-NULL NULL No effect realloc(non-NULL, 0) Non-NULL NULL NULL In all the above cases, if the function returns a non-NULL pointer, it's valid only for a corresponding call to free() or realloc().
Classification:
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | No |
Thread | Yes |