Provided by: libbsd-dev_0.8.2-1ubuntu0.1_amd64 bug

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)