Annotation of 43BSDReno/share/man/man3f/malloc.3, revision 1.1.1.1

1.1       root        1: .\" Copyright (c) 1985 Regents of the University of California.
                      2: .\" All rights reserved.  The Berkeley software License Agreement
                      3: .\" specifies the terms and conditions for redistribution.
                      4: .\"
                      5: .\"    @(#)malloc.3f   6.1 (Berkeley) 5/15/85
                      6: .\"
                      7: .TH MALLOC 3F  "May 15, 1985"
                      8: .UC 6
                      9: .SH NAME
                     10: malloc, free, falloc \- memory allocator
                     11: .SH SYNOPSIS
                     12: .nf
                     13: .B subroutine malloc (size, addr)
                     14: .B integer size, addr
                     15: .PP
                     16: .B subroutine free (addr)
                     17: .B integer addr
                     18: .PP
                     19: .B
                     20: subroutine falloc (nelem, elsize, clean, basevec, addr, offset)
                     21: .B
                     22: integer nelem, elsize, clean, addr, offset
                     23: .fi
                     24: .SH DESCRIPTION
                     25: .IR Malloc , \ falloc
                     26: and
                     27: .I free
                     28: provide a general-purpose memory allocation package.
                     29: .I Malloc
                     30: returns in
                     31: .I addr
                     32: the address of a block of at least
                     33: .I size
                     34: bytes beginning on an even-byte boundary.
                     35: .PP
                     36: .I Falloc
                     37: allocates space for an array of
                     38: .I nelem
                     39: elements of size
                     40: .I elsize
                     41: and returns the address of the block in
                     42: .I addr.
                     43: It zeros the block if
                     44: .I clean
                     45: is 1.
                     46: It returns in
                     47: .I offset
                     48: an index such that the storage may be addressed as
                     49: .I basevec(offset+1) ... basevec(offset+nelem).
                     50: .I Falloc
                     51: gets extra bytes so that after address arithmetic,
                     52: all the objects so addressed are within the block.
                     53: .PP
                     54: The argument to
                     55: .I free
                     56: is the address of a block previously allocated by
                     57: .I malloc
                     58: or
                     59: .IR falloc ;
                     60: this space is made available for further allocation,
                     61: but its contents are left undisturbed.
                     62: To free blocks allocated by
                     63: .I falloc,
                     64: use
                     65: .I addr
                     66: in calls to
                     67: .I free,
                     68: do not use
                     69: .I basevec(offset+1).
                     70: .PP
                     71: Needless to say, grave disorder will result if the space assigned by
                     72: .IR malloc or falloc
                     73: is overrun or if some random number is handed to
                     74: .IR free .
                     75: .SH DIAGNOSTICS
                     76: .I Malloc
                     77: and
                     78: .I falloc
                     79: set
                     80: .I addr
                     81: to 0 if there is no available memory or if the arena
                     82: has been detectably corrupted by storing outside the bounds of a block.
                     83: .PP
                     84: The following example shows how to obtain memory and use it within a
                     85: subprogram:
                     86: .nf
                     87: 
                     88:       integer addr, work(1), offset
                     89:          ...
                     90:       call falloc ( n, 4, 0, work, addr, offset )
                     91:       do 10 i = 1, n
                     92:       work(offset+i) = ...
                     93: 10    continue
                     94: .fi
                     95: .PP
                     96: The next example reads in dimension information,
                     97: allocates space for two arrays and two vectors,
                     98: and calls subroutine
                     99: .I doit
                    100: to do the computations:
                    101: .nf
                    102: 
                    103:       integer addr, dummy(1), offs
                    104:       read *, k, l, m
                    105:       indm1   = 1
                    106:       indm2   = indm1 + k*l
                    107:       indm3   = indm2 + l*m
                    108:       indsym  = indm3 + k*m
                    109:       lsym = n*(n+1)/2
                    110:       indv  = indsym + lsym
                    111:       indtot = indv + m
                    112:       call falloc ( indtot, 4, 0, dummy, addr, offs )
                    113:       call doit( dummy(indm1+offs), dummy(indm2+offs),
                    114:      .           dummy(indm3+offs), dummy(indsym+offs),
                    115:      .           dummy(indv +offs), m, n, lsym )
                    116:       end
                    117:       subroutine doit( arr1, arr2, arr3, vsym, vec, m, n, lsym )
                    118:       real arr1(k,l), arr2(l,m), arr3(k,m), vsym(lsym), v2(m)
                    119:          ...
                    120: .fi
                    121: .SH FILES
                    122: /usr/lib/libU77.a
                    123: .SH SEE ALSO
                    124: malloc(3)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.