Provided by: libbsd-dev_0.8.2-1ubuntu0.1_amd64
NAME
reallocarray — memory allocation and deallocation
LIBRARY
library “libbsd”
SYNOPSIS
#include <bsd/stdlib.h> void * reallocarray(void *ptr, size_t nmemb, size_t size);
DESCRIPTION
When using malloc() be careful to avoid the following idiom: if ((p = malloc(num * size)) == NULL) err(1, "malloc"); The multiplication may lead to an integer overflow, which can be avoided using the extension reallocarray(), as follows: if ((p = reallocarray(NULL, num, size)) == NULL) err(1, "malloc"); Alternatively calloc() is a more portable solution which comes with the cost of clearing memory. If malloc() must be used, be sure to test for overflow: if (size && num > SIZE_MAX / size) { errno = ENOMEM; err(1, "overflow"); } The use of reallocarray() or calloc() is strongly encouraged when allocating multiple sized objects in order to avoid possible integer overflows.
RETURN VALUES
The reallocarray() function returns a pointer to the allocated space if successful; otherwise, a null pointer is returned and errno is set to ENOMEM.
SEE ALSO
malloc(3), calloc(3), alloca(3)
HISTORY
reallocarray() appeared in OpenBSD 5.6.