x SuSE Linux 13.1-RELEASE x
x SuSE Linux 13.1-RELEASEx
REALLOCARRAY(3bsd) LOCAL REALLOCARRAY(3bsd)
NAME
reallocarray -- memory allocation and deallocation
LIBRARY
library "libbsd"
SYNOPSIS
#include <stdlib.h>
(See libbsd(7) for include usage.)
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 allo-
cating multiple sized objects in order to avoid possible integer over-
flows.
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, glibc 2.26.
BSD May 1, 2014 BSD
Want to link to this manual page? Use this URL:
<https://star2.abcm.com/cgi-bin/bsdi-man?query=reallocarray&sektion=3bsd&manpath=>