Other Aliasmandoc_malloc, mandoc_realloc, mandoc_reallocarray, mandoc_calloc, mandoc_strndup, mandoc_asprintf
LIBRARYMandoc Macro Compiler Library (libmandoc, -lmandoc)
- mandoc_malloc(size_t size);
- mandoc_realloc(void *ptr, size_t size);
- mandoc_reallocarray(void *ptr, size_t nmemb, size_t size);
- mandoc_calloc(size_t nmemb, size_t size);
- mandoc_strdup(const char *s);
- mandoc_strndup(const char *s, size_t maxlen);
- mandoc_asprintf(char **ret, const char *format, ...);
The function mandoc_malloc() allocates one new object, leaving the memory uninitialized. The functions mandoc_realloc() and mandoc_reallocarray() change the size of an existing object or array, possibly moving it. When shrinking the size, existing data is truncated; when growing, the additional memory is not initialized. The function mandoc_calloc() allocates a new array, initializing it to zero.
The argument size is the size of each object. The argument nmemb is the new number of objects in the array. The argument ptr is a pointer to the existing object or array to be resized; if it is NULL, a new object or array is allocated.
The functions mandoc_strdup() and mandoc_strndup() copy a string into newly allocated memory. For mandoc_strdup(), the string pointed to by s needs to be NUL-terminated. For mandoc_strndup(), at most maxlen bytes are copied. The function mandoc_asprintf() writes output formatted according to format into newly allocated memory and returns a pointer to the result in ret. For all three string functions, the result is always NUL-terminated.
When the objects and strings are no longer needed, the pointers returned by these functions can be passed to free(3).
RETURN VALUESThe function mandoc_asprintf() always returns the number of characters written, excluding the final NUL byte. It never returns -1.
The other functions always return a valid pointer; they never return NULL.
FILESThese functions are implemented in mandoc_aux.c.
STANDARDSThe functions malloc(), realloc(), and calloc() are required by ANSI X3.159-1989 (LqANSI~C89Rq). The functions strdup() and strndup() are required by IEEE Std 1003.1-2008 (LqPOSIX.1Rq). The function asprintf() is a widespread extension that first appeared in the GNU C library.
The function reallocarray() is an extension that first appeared in OpenBSD 5.6. If it is not provided by the operating system, the mandoc build system uses a bundled portable implementation.