NAME¶
xmalloc, xrealloc, xfree, xstrdup, xmemdup, memdup - memory allocation functions
for Publib
SYNOPSIS¶
#include <publib.h>
void * xmalloc(size_t bytes);
void * xrealloc(void *ptr, size_t bytes);
void xfree(void *ptr);
char * xstrdup(const char *string);
void * memdup(const void *mem, size_t bytes);
void * xmemdup(const void *mem, size_t bytes);
DESCRIPTION¶
These functions are utility functions for memory allocation from the publib
library.
xmalloc,
xrealloc, and
xfree are error checking
versions of the standard library routines
malloc,
realloc, and
free, respectively. They are guaranteed to never return unless there
was no problem: if, for example,
xmalloc is unable to allocate the
requested amount of memory, it prints an error message and terminates the
program. Hence, the caller does not need to check for a NULL return value, and
the code that calls these functions is simpler due to the lack of error
checks.
Similarly,
xstrdup is an error checking version of the common (though not
standard)
strdup routine, which creates a duplicate of a string by
allocating memory for the copy with
malloc. (For systems that lack
strdup, publib provides one in its portability module; it is always
declared in <publib.h>.)
memdup is similar to
strdup, it creates a copy of an arbitrary
memory area (the arguments are a pointer to the beginning of the area, and its
size) by allocating memory for the copy with
malloc.
xmemdup is
its error checking version.
NOTE¶
xmalloc and
xrealloc treat a request to allocate a block of 0
bytes as an error.
xrealloc will allow its first argument to be NULL.
SEE ALSO¶
publib(3),
malloc(3),
strdup(3)
AUTHOR¶
Lars Wirzenius (lars.wirzenius@helsinki.fi)