Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ (2) — Plan9 1st Edition

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

brk(2)

MALLOC(2)

NAME

malloc, free, realloc, calloc, mstats − memory allocator

SYNOPSIS

void∗malloc(long size)

voidfree(void ∗ptr)

void∗realloc(void ∗ptr, long size)

void∗calloc(long nelem, long elsize)

DESCRIPTION

­Malloc and ­free provide a simple memory allocation package.  ­Malloc returns a pointer to a new block of at least ­size bytes.  The block is suitably aligned for storage of any type of object.  No two active pointers from ­malloc will have the same value. 

The argument to ­free is a pointer to a block previously allocated by malloc; this space is made available for further allocation. It is legal to free a null pointer; the effect is a no-op.

­Realloc 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.  The call ­realloc(0, size) means the same as malloc(size). 

­Calloc allocates space for an array of ­nelem elements of size ­elsize.  The space is initialized to zeros.  ­Free frees such a block. 

SEE ALSO

brk(2)

DIAGNOSTICS

­Malloc, realloc and ­calloc return 0 if there is no available memory.  ­Errstr is likely to be set. 

BUGS

The different specification of ­calloc is bizarre. 

User errors can corrupt the storage arena.  The most common gaffes are (1) freeing an already freed block, (2) storing beyond the bounds of an allocated block, and (3) freeing data that was not obtained from the allocator.  When ­malloc and ­free detect such corruption, they abort. 

Plan 9  —  January 03, 1993

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026