SunOS man pages : bsdmalloc (3)
Memory Allocation Library Functions bsdmalloc(3MALLOC)
NAME
bsdmalloc - memory allocator
SYNOPSIS
cc [ flag ... ] file ... -lbsdmalloc [ library ... ]
char *malloc(size);
unsigned size;
int free( ptr);
char *ptr;
char *realloc( ptr, size);
char *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 (see DIAGNOSTICS).
malloc() returns a pointer to a block of at least
size bytes, which is appropriately aligned.
free() releases a previously allocated block. Its argument
is a pointer to a block previously allocated by malloc()
or realloc().
realloc() changes the size of the block referenced 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 unable to honor a
reallocation request, realloc() leaves its first argument
unaltered. For backwards compatibility, realloc() accepts
a pointer to a block freed since the most recent call to
malloc() or realloc().
RETURN VALUES
malloc() and realloc() return a null pointer if there is not
enough available memory. When realloc() returns NULL, the
block pointed to by ptr is left intact.
ERRORS
If malloc() or realloc() returns unsuccessfully, errno will
be set to indicate the following:
SunOS 5.8 Last change: 11 Feb 1993 1
Memory Allocation Library Functions bsdmalloc(3MALLOC)
ENOMEM
size bytes of memory exceeds the physical limits of
your system, and cannot be allocated.
EAGAIN
There is not enough memory available at this point in
time to allocate size bytes of memory; but the appli-
cation could try again later.
SEE ALSO
brk(2), malloc(3C), malloc(3MALLOC), mapmalloc(3MALLOC)
WARNINGS
Use of libbsdmalloc renders an application non-SCD compli-
ant.
libbsdmalloc routines are incompatible with the memory allo-
cation routines in the standard C-library (libc):
malloc(3C), alloca(3C), calloc(3C), free(3C), memalign(3C),
realloc(3C), and valloc(3C).
NOTES
Using realloc() with a block freed before the most recent
call to malloc() or realloc() will result in an error.
malloc() and realloc() return a non-NULL pointer if size
is 0. These pointers should not be dereferenced.
Always cast the value returned by malloc() and realloc().
Comparative features of bsdmalloc(), malloc(3MALLOC), and
malloc(3C)
o The bsdmalloc() routines afford better performance,
but are space-inefficient.
o The malloc(3MALLOC) routines are space-efficient, but
have slower performance.
o The standard, fully SCD-compliant malloc(3C) routines
are a trade-off between performance and space-
efficiency.
free() does not set errno.
SunOS 5.8 Last change: 11 Feb 1993 2
|
 |
|
|