MALLOC(3F)	    UNIX Programmer's Manual	       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 boun-
     dary.

     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 undis-
     turbed.  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


Printed 11/26/99	  May 15, 1985				1


MALLOC(3F)	    UNIX Programmer's Manual	       MALLOC(3F)


     The next example reads in dimension information, allocates
     space for two arrays and two vectors, and calls subroutine
     doit to do the computations:

	   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)


Printed 11/26/99	  May 15, 1985				2


 
Generated: 2016-12-26
Generated by man2html V0.25
page hit count: 995
Valid CSS Valid XHTML 1.0 Strict