LIBRARY
Lb libbsdSYNOPSIS
In bsd/stdlib.h Ft void * Fn reallocarray void *ptr size_t nmemb size_t sizeDESCRIPTION
When using Fn 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 Fn reallocarray , as follows:
if ((p = reallocarray(NULL, num, size)) == NULL) err(1, "malloc");
Alternatively Fn calloc is a more portable solution which comes with the cost of clearing memory.
If Fn malloc must be used, be sure to test for overflow:
if (size && num > SIZE_MAX / size) { errno = ENOMEM; err(1, "overflow"); }
The use of Fn reallocarray or Fn calloc is strongly encouraged when allocating multiple sized objects in order to avoid possible integer overflows.
RETURN VALUES
The Fn reallocarray function returns a pointer to the allocated space if successful; otherwise, a null pointer is returned and errno is set to Er ENOMEM .HISTORY
Fn reallocarray appeared in Ox 5.6 .