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.
Debian May 1, 2014 MALLOC(3)