118 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
.\" Copyright (c) 1980 Regents of the University of California.
 | 
						|
.\" All rights reserved.  The Berkeley software License Agreement
 | 
						|
.\" specifies the terms and conditions for redistribution.
 | 
						|
.\"
 | 
						|
.\"	@(#)malloc.3	6.3 (Berkeley) 5/14/86
 | 
						|
.\"
 | 
						|
.TH MALLOC 3  "May 14, 1986"
 | 
						|
.UC 4
 | 
						|
.SH NAME
 | 
						|
malloc, free, realloc, calloc, alloca \- memory allocator
 | 
						|
.SH SYNOPSIS
 | 
						|
.nf
 | 
						|
.ft B
 | 
						|
#include <sys/types.h>
 | 
						|
#include <stdlib.h>
 | 
						|
#include <alloca.h>
 | 
						|
 | 
						|
void *malloc(size_t \fIsize\fP)
 | 
						|
void free(void *\fIptr\fP)
 | 
						|
void *realloc(void *\fIptr\fP, size_t \fIsize\fP)
 | 
						|
void *calloc(size_t \fInelem\fP, size_t \fIelsize\fP)
 | 
						|
void *alloca(size_t \fIsize\fP)
 | 
						|
.ft R
 | 
						|
.fi
 | 
						|
.SH DESCRIPTION
 | 
						|
.B Malloc
 | 
						|
and
 | 
						|
.B free
 | 
						|
provide a general-purpose memory allocation package.
 | 
						|
.B Malloc
 | 
						|
returns a pointer to a block of at least
 | 
						|
.I size
 | 
						|
bytes beginning on a word boundary.
 | 
						|
.PP
 | 
						|
The argument to
 | 
						|
.B free
 | 
						|
is a pointer to a block previously allocated by
 | 
						|
.BR malloc ;
 | 
						|
this space is made available for further allocation,
 | 
						|
but its contents are left undisturbed.
 | 
						|
A call with a null
 | 
						|
.I ptr
 | 
						|
is legal and does nothing.
 | 
						|
.PP
 | 
						|
Needless to say, grave disorder will result if the space assigned by
 | 
						|
.B malloc
 | 
						|
is overrun or if some random number is handed to
 | 
						|
.BR free .
 | 
						|
.PP
 | 
						|
.B Malloc
 | 
						|
maintains multiple lists of free blocks according to size,
 | 
						|
allocating space from the appropriate list.
 | 
						|
It calls
 | 
						|
.B sbrk
 | 
						|
(see
 | 
						|
.BR brk (2))
 | 
						|
to get more memory from the system when there is no
 | 
						|
suitable space already free.
 | 
						|
.PP
 | 
						|
.B 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.
 | 
						|
A call with a null
 | 
						|
.I ptr
 | 
						|
is legal and has the same result as
 | 
						|
.BI malloc( size )\fR.
 | 
						|
.PP
 | 
						|
.B Calloc
 | 
						|
allocates space for an array of
 | 
						|
.I nelem
 | 
						|
elements of size
 | 
						|
.I elsize.
 | 
						|
The space is initialized to zeros.
 | 
						|
.PP
 | 
						|
.B 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.
 | 
						|
.SH SEE ALSO
 | 
						|
.BR brk (2).
 | 
						|
.SH DIAGNOSTICS
 | 
						|
.BR Malloc ,
 | 
						|
.BR realloc
 | 
						|
and
 | 
						|
.B calloc
 | 
						|
return a null pointer if there is no available memory or if the arena
 | 
						|
has been detectably corrupted by storing outside the bounds of a block.
 | 
						|
.SH NOTES
 | 
						|
Other implementations of
 | 
						|
.BR malloc ,
 | 
						|
.BR realloc
 | 
						|
or
 | 
						|
.BR calloc
 | 
						|
may return a null pointer if the size of the requested block is zero.  This
 | 
						|
implementation will always return a zero length block at a unique address,
 | 
						|
but you should keep in mind that a null return is possible if the program
 | 
						|
is run to another system and that this should not be mistakenly seen as
 | 
						|
an error.
 | 
						|
.SH BUGS
 | 
						|
When
 | 
						|
.B realloc
 | 
						|
returns a null pointer, the block pointed to by
 | 
						|
.I ptr
 | 
						|
may be destroyed.
 | 
						|
.PP
 | 
						|
.B Alloca
 | 
						|
is machine dependent; its use is discouraged.
 |