Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
bsdmalloc(3MALLOC)					    bsdmalloc(3MALLOC)

       bsdmalloc - memory allocator

       cc [ flag ... ] file ...	-lbsdmalloc [ library ... ]

       char *malloc(size);
       unsigned	size;

       int free( ptr);
       char *ptr;

       char *realloc( ptr, size);
       char *ptr;
       unsigned	size;

       These  routines	provide	 a  general-purpose memory allocation package.
       They maintain a table of	free blocks for	efficient allocation and  coa-
       lescing	of free	storage. When there is no suitable space already free,
       the allocation routines call sbrk(2) to get more	memory from  the  sys-
       tem. Each of the	allocation routines returns a pointer  to  space suit-
       ably 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.

       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().

       If malloc() or realloc()	returns	 unsuccessfully, errno will be set  to
       indicate	the following:

       ENOMEM	       size bytes of memory cannot be allocated	because	it ex-
		       ceeds 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 applica-
		       tion could try again later.

       Using realloc() with a block freed before the most recent call to  mal-
       loc() or	realloc() results in an	error.

       Comparative  features  of the various allocation	libraries can be found
       in the umem_alloc(3MALLOC) manual page.

       brk(2),	malloc(3C),  malloc(3MALLOC),	mapmalloc(3MALLOC),   umem_al-

       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), cal-
       loc(3C),	free(3C), memalign(3C),	realloc(3C), and  valloc(3C).

				  21 Mar 2005		    bsdmalloc(3MALLOC)


Want to link to this manual page? Use this URL:

home | help