HPUX free[3f]



free in anderen Kapiteln des hpux Handbuch: free.3c




 MALLOC(3F)                                                       MALLOC(3F)

                  +U77 FORTRAN compile-line option required



 NAME
      malloc, free, falloc - memory allocator

 SYNOPSIS
      subroutine malloc (size, addr)
      INTEGER*4 size, addr

      subroutine free (addr)
      INTEGER*4 addr

      subroutine falloc (nelem, elsize, clean, basevec, addr, offset)
      INTEGER*4 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 suitably aligned for storage of any type of object.

      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). Basevec
      is an input argument to falloc and should be declared as an array.
      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
      malloc or falloc 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*4 n, addr, work(1), offset
               ...
            call falloc ( n, 4J, 0J, work, addr, offset )
            do 10 i = 1, n
            work(offset+i) = ...
      10    continue





 Hewlett-Packard Company            - 1 -       HP-UX Release 9.0: June 1992






 MALLOC(3F)                                                       MALLOC(3F)

                  +U77 FORTRAN compile-line option required



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

            INTEGER*4 indtot, 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, 4J, 0J, 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)



























 Hewlett-Packard Company            - 2 -       HP-UX Release 9.0: June 1992