NAME

     malloc, free, realloc, calloc, alloca - memory allocator


SYNOPSIS

     #include <sys/types.h>
     #include <stdlib.h>
     #include <alloca.h>

     void *malloc(size_t size)
     void free(void *ptr)
     void *realloc(void *ptr, size_t size)
     void *calloc(size_t nelem, size_t elsize)
     void *alloca(size_t size)


DESCRIPTION

     Malloc and free provide a general-purpose memory  allocation
     package.   Malloc  returns  a pointer to a block of at least
     size bytes beginning 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.
     A call with a null ptr is legal and does nothing.

     Needless to say, grave disorder will  result  if  the  space
     assigned  by  malloc  is overrun or if some random number is
     handed to free.

     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 pointed to by  ptr  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.  A call with a null ptr is legal and
     has the same result as malloc(size).

     Calloc allocates space for an array  of  nelem  elements  of
     size elsize. The space is initialized to zeros.

     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  (after  possible  pointer  coercion)  for
     storage of any type of object.


SEE ALSO

     brk(2).


DIAGNOSTICS

     Malloc, realloc and calloc return a null pointer if there is
     no available memory or if the arena has been detectably cor-
     rupted by storing outside the bounds of a block.


NOTES

     Other implementations  of  malloc,  realloc  or  calloc  may
     return  a null pointer if the size of the requested block is
     zero.  This implementation will always return a zero  length
     block  at a unique address, but you should keep in mind that
     a null return is possible if the program is run  to  another
     system  and  that  this  should not be mistakenly seen as an
     error.


BUGS

     When realloc returns a null pointer, the block pointed to by
     ptr may be destroyed.

     Alloca is machine dependent; its use is discouraged.