MALLOC(3F)                                                          MALLOC(3F)


NAME
       malloc, free, falloc - memory allocator

SYNOPSIS
       subroutine malloc (size, addr)
       integer size, addr

       subroutine free (addr)
       integer addr

       subroutine falloc (nelem, elsize, clean, basevec, addr, offset)
       integer nelem, elsize, clean, addr, offset

DESCRIPTION
       Malloc, falloc  and  free  provide  a general-purpose memory allocation
       package.  Malloc returns in addr the address of a  block  of  at  least
       size bytes beginning on an even-byte boundary.

       Falloc  allocates  space  for an array of nelem elements of size elsize
       and returns the address of the block in addr.  It zeros  the  block  if
       clean is 1.  It returns in offset an index such that the storage may be
       addressed as basevec(offset+1) ... basevec(offset+nelem).  Falloc  gets
       extra  bytes  so  that  after  address  arithmetic,  all the objects so
       addressed are within the block.

       The argument to free is the address of a block previously allocated  by
       malloc  or falloc; this space is made available for further allocation,
       but its contents are left undisturbed.  To  free  blocks  allocated  by
       falloc, use addr in calls to free, do not use basevec(offset+1).

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

DIAGNOSTICS
       Malloc and falloc set addr to 0 if there is no available memory  or  if
       the  arena  has been detectably corrupted by storing outside the bounds
       of a block.

       The following example shows how to obtain memory and use  it  within  a
       subprogram:

             integer addr, work(1), offset
                ...
             call falloc ( n, 4, 0, work, addr, offset )
             do 10 i = 1, n
             work(offset+i) = ...
       10    continue

       The  next  example  reads in dimension information, allocates space for
       two arrays and two vectors, and calls subroutine doit to do the  compuā€
       tations:

             integer addr, dummy(1), offs
             read *, k, l, m
             indm1   = 1
             indm2   = indm1 + k*l
             indm3   = indm2 + l*m
             indsym  = indm3 + k*m
             lsym = n*(n+1)/2
             indv  = indsym + lsym
             indtot = indv + m
             call falloc ( indtot, 4, 0, dummy, addr, offs )
             call doit( dummy(indm1+offs), dummy(indm2+offs),
            .           dummy(indm3+offs), dummy(indsym+offs),
            .           dummy(indv +offs), m, n, lsym )
             end
             subroutine doit( arr1, arr2, arr3, vsym, vec, m, n, lsym )
             real arr1(k,l), arr2(l,m), arr3(k,m), vsym(lsym), v2(m)
                ...

FILES
       /usr/lib/libU77.a

SEE ALSO
       malloc(3)


4.3 Berkeley Distribution        May 15, 1985                       MALLOC(3F)
 
Generated: 2016-12-26
Generated by man2html V0.25
page hit count: 859
Valid CSS Valid XHTML 1.0 Strict