BSDMALLOC(3MALLOC) Memory Allocation Library Functions BSDMALLOC(3MALLOC)
NAME
bsdmalloc - memory allocator
SYNOPSIS
cc [
flag ... ]
file ...
-lbsdmalloc [
library ... ]
char *malloc(
sizeunsigned
size;
int free(
ptrchar *
ptr;
char *realloc(
ptr,
sizechar *
ptr;
unsigned
size;
DESCRIPTION
These routines provide a general-purpose memory allocation package. They
maintain a table of free blocks for efficient allocation and coalescing
of free storage. When there is no suitable space already free, the
allocation routines call
sbrk(2) to get more memory from the system. Each
of the allocation routines returns a pointer to space suitably aligned
for storage of any type of object. Each returns a null pointer if the
request cannot be completed.
The
malloc() function returns a pointer to a block of at least
size bytes, which is appropriately aligned.
The
free() function releases a previously allocated block. Its argument
is a pointer to a block previously allocated by
malloc() or
realloc().
The
free() function does not set
errno.
The
realloc() function changes the size of the block pointed to by
ptr to
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
the new size of the block requires movement of the block, the space for
the previous instantiation of the block is freed. If the new size is
larger, the contents of the newly allocated portion of the block are
unspecified. If
ptr is
NULL,
realloc() behaves like
malloc() for the
specified size. If
size is 0 and
ptr is not a null pointer, the space
pointed to is freed.
RETURN VALUES
The
malloc() and
realloc() functions return a null pointer if there is
not enough available memory. They return a non-null pointer if
size is
0. These pointers should not be dereferenced. When
realloc() returns
NULL, the block pointed to by
ptr is left intact. Always cast the value
returned by
malloc() and
realloc().
ERRORS
If
malloc() or
realloc() returns unsuccessfully,
errno will be set to
indicate the following:
ENOMEM size bytes of memory cannot be allocated because it exceeds the
physical limits of the system.
EAGAIN There is not enough memory available at this point in time to
allocate
size bytes of memory; but the application could try
again later.
USAGE
Using
realloc() with a block freed before the most recent call to
malloc() or
realloc() results in an error.
Comparative features of the various allocation libraries can be found in
the
umem_alloc(3MALLOC) manual page.
SEE ALSO
brk(2),
malloc(3C),
malloc(3MALLOC),
mapmalloc(3MALLOC),
umem_alloc(3MALLOC)WARNINGS
Use of
libbsdmalloc renders an application non-SCD compliant.
The
libbsdmalloc routines are incompatible with the memory allocation
routines in the standard C-library (libc):
malloc(3C),
alloca(3C),
calloc(3C),
free(3C),
memalign(3C),
realloc(3C), and
valloc(3C).
March 21, 2005
BSDMALLOC(3MALLOC)