MALLOC(3)
NAME
malloc free, realloc, calloc, alloca − memory allocator
USAGE
char *malloc(size)
unsigned size;
free(ptr)
char *ptr;
char *realloc(ptr, size)
char *ptr;
unsigned size;
char *calloc(nelem, elsize)
unsigned nelem, elsize;
char *alloca(size)
int size;
DESCRIPTION
Malloc and free provide simple, general-purpose memory allocation functions. Malloc returns a pointer to a block of at least size bytes that begins on a word boundary.
The argument to free is a pointer to a block previously allocated by malloc; this space is made available for further allocation, but its contents are left undisturbed.
Malloc maintains multiple lists of free blocks according to size, allocating space from the appropriate list. It calls sbrk (see brk(2)) to get more memory from the system when there is no suitable space already free.
Realloc changes the size of the block to which ptr points, to size bytes and returns a pointer to the (possibly moved) block. The contents will be unchanged, up to the lesser of the new and old sizes.
In order to be compatible with older versions, realloc also works if ptr points to a block freed since the last call of malloc, realloc, or calloc; sequences of malloc, realloc, and realloc have been used in the past to attempt storage compaction. This procedure is no longer recommended.
Calloc allocates space for an array of nelem elements of size elsize. The space is filled with zeros, initially.
Alloca allocates size bytes of space in the stack frame of the caller. This temporary space is automatically freed on return.
Each of the allocation routines returns a pointer to space suitably aligned for storage of any type of object.
NOTES
If the space assigned by malloc is overrun, or if a random number is handed to free, problems will result.
When realloc returns zero, the block that ptr points to may be destroyed.
Alloca is machine-dependent; its use is discouraged.
DIAGNOSTICS
Malloc, realloc and calloc return a null pointer (zero), if there is no available memory, or if the arena has been detectably corrupted by storing outside the bounds of a block. Malloc can be recompiled to check the arena very stringently on every transaction; those sites with a source code license may check the source code to see how this can be done.