Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ malloc(3) — GENIX 4.1A

Media Vault

Software Library

Restoration Projects

Artifacts Sought



      MALLOC(3)               GENIX Programmer's Manual               MALLOC(3)



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

      SYNOPSIS
           char *malloc(size)
           unsigned size;

           free(ptr)
           char *ptr;

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

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

      DESCRIPTION
           Malloc and free provide a simple 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.

           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 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 suit-
           able 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 con-
           tents will be unchanged up to the lesser of the new and old sizes.

           Realloc also works if ptr points to a block  freed  since  the  last
           call  of  malloc,  realloc or calloc; thus sequences of free, malloc
           and realloc can exploit the search strategy of malloc to do  storage
           compaction.

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

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





      Printed 11/16/83                                                        1





      MALLOC(3)               GENIX Programmer's Manual               MALLOC(3)



      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
           storing outside the bounds of a block.  Malloc may be recompiled  to
           check  the  arena  very  stringently  on  every transaction; see the
           source code.

      BUGS
           When realloc returns 0, the block pointed to  by  ptr  may  be  des-
           troyed.

           The current incarnation of the allocator is  unsuitable  for  direct
           use in a large virtual environment where many small blocks are to be
           kept, since it keeps all allocated and freed blocks on a single cir-
           cular list.  Just before more memory is allocated, all allocated and
           freed blocks are referenced; this can cause a huge  number  of  page
           faults.






































      Printed 11/16/83                                                        2



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026