glenda.party
term% ls -F
term% cat index.txt
MALLOC(3)                  Library Functions Manual                  MALLOC(3)



NAME
       malloc, free, realloc, ialloc, calloc, cfree - main memory allocator

SYNOPSIS
       char *malloc(size)
       unsigned size;

       free(ptr)
       char *ptr;

       char *realloc(ptr, size)
       char *ptr;
       unsigned size;

       ialloc(ptr, size)
       char *ptr;
       unsigned size;

       char *calloc(nelem, elsize)
       unsigned nelem, elsize;

       cfree(ptr)
       char *ptr;

DESCRIPTION
       Malloc  and  free  provide  a  simple general-purpose memory allocation
       package.  Malloc returns a pointer to a new  block  of  at  least  size
       bytes.

       The  argument  to  free is a pointer to a block previously allocated by
       malloc; this space is  made  available  for  further  allocation.   The
       present  implementation of free does not change the contents; but it is
       unwise to depend on this fact.

       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.

       Ialloc inserts into the arena a designated block of store that was  not
       previously known to the allocator.

       Calloc  allocates  space for an array of nelem elements of size elsize.
       The space is initialized to zeros.  Cfree frees such a block.

       Each of the allocation routines returns a  pointer  to  space  suitably
       aligned  (after  possible  pointer coercion) for storage of any type of
       object.

       The arena, though not necessarily contiguous, is kept in strict address
       order.   Malloc allocates the first big enough contiguous reach of free
       space found in a circular search  from  the  last  block  allocated  or
       freed,  coalescing  adjacent free blocks as it searches.  It calls sbrk
       (see break(2)) to get more memory from the  system  when  there  is  no
       suitable  space  already  free.  It has been arranged that realloc will
       work on a block that has been freed, provided no other allocations have
       intervened.  This questionable, unportable practice allows combinations
       of free, realloc and malloc to be used to rearrange the arena.

SEE ALSO
       galloc(3), sbrk(2)

DIAGNOSTICS
       Malloc, realloc and calloc return a null pointer (0)  if  there  is  no
       available memory or if the arena has been detectably corrupted by stor‐
       ing outside the bounds of a block.  A very stringently checking version
       of  malloc,  which  aborts with a diagnostic if the arena is corrupted,
       can be created by recompilation with a  debugging  flag  set;  see  the
       source.

BUGS
       When realloc returns 0, the block pointed to by ptr may be destroyed.
       Malloc  is  general, not fast.  A program that repeatedly allocates and
       frees a particular kind of block often can be speeded up by superimpos‐
       ing a block-cacheing or suballocation scheme on top of malloc-free.



                                                                     MALLOC(3)