bsd man page for free

Query: free

OS: bsd

Section: 3f

Links: bsd man pages   all man pages

Forums: unix linux community   forum categories

Format: Original Unix Latex Style Formatted with HTML and a Horizontal Scroll Bar

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 alloca- tion, 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)
Related Man Pages
calloc(3) - bsd
free(3f) - bsd
malloc(3f) - bsd
malloc(3) - v7
free(3) - ultrix
Similar Topics in the Unix Linux Community
AIX 5.3 , gensyms command, translate 32 bit addr to 64 bit addr
Seperate contents in a file with | as delimiter
Infraction for guruprasadpr: Needless self promotion
Unable to get the correct sort order in perl.
Added Two Arrays But With Errors