X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/mLib/blobdiff_plain/8f45ff6cb9a269fc6f8f631908f93b4c8123419c..4aee39a18184ae8595936a03ad254c27d149a0eb:/alloc.3 diff --git a/alloc.3 b/alloc.3 new file mode 100644 index 0000000..06ad53d --- /dev/null +++ b/alloc.3 @@ -0,0 +1,69 @@ +.\" -*-nroff-*- +.TH alloc 3 "8 May 1999" "Straylight/Edgeware" "mLib utilities library" +.\" @xmalloc +.\" @xrealloc +.\" @xstrdup +.\" @xfree +.\" @x_alloc +.\" @x_strdup +.\" @x_realloc +.\" @x_free +.SH NAME +alloc \- mLib low-level memory allocation +.SH SYNOPSIS +.nf +.B "#include " + +.BI "void *x_alloc(arena *" a ", size_t " sz ); +.BI "char *x_strdup(arena *" a ", const char *" s ); +.BI "void *x_realloc(arena *" a ", void *" p ", size_t " sz ", size_t " osz ); +.BI "void x_free(arena *" a ", void *" p ); + +.BI "void *xmalloc(size_t " sz ); +.BI "void *xrealloc(void *" p ", size_t " sz ", size_t " osz ); +.BI "char *xstrdup(const char *" s ); +.BI "void xfree(void *" p ); +.fi +.SH DESCRIPTION +These functions allocate and return blocks of memory. If insufficient +memory is available, an +.B EXC_NOMEM +exception is raised. +.PP +The functions +.BR x_alloc , +.BR x_realloc , +.BR x_strdup +and +.BR x_free +work with a given arena (see +.BR arena (3)). +.B x_alloc +allocates a block of a given size; +.B x_realloc +resizes an allocated block; +.B x_strdup +allocates a copy of a null-terminated string; and +.B x_free +releases a block. +.RB ( x_free +is supplied for orthogonality's sake: it's equivalent to calling the +.BR A_FREE (3) +macro.) +.PP +The +.BR xmalloc , +.BR xrealloc , +.BR xstrdup +and +.BR xfree +macros are provided as a convenient interface to failsafe memory +allocation from the current arena +.BR arena_global (3). +.SH "SEE ALSO" +.BR arena (3), +.BR exc (3), +.BR mLib (3). +.SH AUTHOR +Mark Wooding, +