BSD 4_3_Net_2 release
[unix-history] / usr / src / lib / libc / stdlib / malloc.3
index 268b0e5..37641b4 100644 (file)
-.\" Copyright (c) 1980 Regents of the University of California.
-.\" All rights reserved.  The Berkeley software License Agreement
-.\" specifies the terms and conditions for redistribution.
+.\" Copyright (c) 1980, 1991 Regents of the University of California.
+.\" All rights reserved.
 .\"
 .\"
-.\"    @(#)malloc.3    6.4 (Berkeley) %G%
+.\" This code is derived from software contributed to Berkeley by
+.\" the American National Standards Committee X3, on Information
+.\" Processing Systems.
 .\"
 .\"
-.TH MALLOC 3  ""
-.UC 4
-.SH NAME
-malloc, free, realloc, calloc, alloca \- memory allocator
-.SH SYNOPSIS
-.nf
-.B char *malloc(size)
-.B unsigned size;
-.PP
-.B free(ptr)
-.B char *ptr;
-.PP
-.B char *realloc(ptr, size)
-.B char *ptr;
-.B unsigned size;
-.PP
-.B char *calloc(nelem, elsize)
-.B unsigned nelem, elsize;
-.PP
-.B char *alloca(size)
-.B int size;
-.fi
-.SH DESCRIPTION
-.I Malloc
-and
-.I free
-provide a general-purpose memory allocation package.
-.I Malloc
-returns a pointer to a block of at least
-.I size
-bytes beginning on a word boundary.
-.PP
-The argument to
-.I free
-is a pointer to a block previously allocated by
-.IR malloc ;
-this space is made available for further allocation,
-but its contents are left undisturbed.
-.PP
-Needless to say, grave disorder will result if the space assigned by
-.I malloc
-is overrun or if some random number is handed to
-.IR free .
-.PP
-.I Malloc
-maintains multiple lists of free blocks according to size,
-allocating space from the appropriate list.
-It calls
-.I sbrk
-(see
-.IR brk (2))
-to get more memory from the system when there is no
-suitable space already free.
-.PP
-.I Realloc
-changes the size of the block pointed to by
-.I ptr
-to
-.I size
-bytes and returns a pointer to the (possibly moved) block.
-The contents will be unchanged up to the lesser of the new and old sizes.
-If
-.I ptr
-is null,
-.I realloc
-simply returns the value of
-.I malloc
-called with an argument of
-.IR size .
-.PP
-In order to be compatible with older versions,
-.I realloc
-also works if
-.I ptr
-points to a block freed since the last call of
-.I malloc, realloc
-or
-.IR calloc ;
-sequences of
-.I free, malloc
-and
-.I realloc
-were previously used to attempt storage compaction.
-This procedure is no longer recommended.
-.PP
-.I Calloc
-allocates space for an array of
-.I nelem
-elements of size
-.I elsize.
-The space is initialized to zeros.
-.PP
-.I Alloca
-allocates 
-.I size
-bytes of space in the stack frame of the caller.
-This temporary space is automatically freed on
-return.
-.PP
-Each of the allocation routines returns a pointer
-to space suitably aligned (after possible pointer coercion)
-for storage of any type of object.
-If the space is of
-.I pagesize
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"    This product includes software developed by the University of
+.\"    California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)malloc.3   6.7 (Berkeley) 6/29/91
+.\"
+.Dd June 29, 1991
+.Dt MALLOC 3
+.Os BSD 4
+.Sh NAME
+.Nm malloc ,
+.Nd general memory allocation function
+.Sh SYNOPSIS
+.Fd #include <stdlib.h>
+.Ft void *
+.Fn malloc "size_t size"
+.Sh DESCRIPTION
+The
+.Fn malloc
+function allocates uninitialized space for an object whose
+size is specified by
+.Fa size .
+The
+.Fn malloc
+function maintains multiple lists of free blocks according to size, allocating
+space from the appropriate list.
+.Pp
+The allocated space is
+suitably aligned (after possible pointer
+coercion) for storage of any type of object. If the space is of
+.Em pagesize
 or larger, the memory returned will be page-aligned.
 or larger, the memory returned will be page-aligned.
-.SH SEE ALSO
-brk(2),
-pagesize(2)
-.SH DIAGNOSTICS
-.I Malloc, realloc
-and
-.I calloc
-return a null pointer (0) if there is no available memory or if the arena
-has been detectably corrupted by storing outside the bounds of a block.
-.I Malloc
-may be recompiled to check the arena very stringently on every transaction;
-those sites with a source code license may check the source code to see
-how this can be done.
-.SH BUGS
-When
-.I realloc
-returns 0, the block pointed to by
-.I ptr
-may be destroyed.
-.PP
+.Sh RETURN VALUES
+The
+.Fn malloc
+function returns
+a pointer to the allocated space if successful; otherwise
+a null pointer is returned.
+.Sh SEE ALSO
+.Xr brk 2 ,
+.Xr pagesize 2 ,
+.Xr free 3 ,
+.Xr calloc 3 ,
+.Xr alloca 3 ,
+.Xr realloc 3 ,
+.Xr memory 3
+.Sh STANDARDS
+The
+.Fn malloc
+function conforms to
+.St -ansiC .
+.Sh BUGS
 The current implementation of
 The current implementation of
-.I malloc
+.Xr malloc
 does not always fail gracefully when system
 memory limits are approached.
 It may fail to allocate memory when larger free blocks could be broken
 up, or when limits are exceeded because the size is rounded up.
 It is optimized for sizes that are powers of two.
 does not always fail gracefully when system
 memory limits are approached.
 It may fail to allocate memory when larger free blocks could be broken
 up, or when limits are exceeded because the size is rounded up.
 It is optimized for sizes that are powers of two.
-.PP
-.I Alloca
-is machine dependent; its use is discouraged.