OpenSuSE Man Pages

Man Page or Keyword Search:
Man Architecture
Apropos Keyword Search (all sections) Output format
home | help
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                            November 14, 2024                           BSD

Want to link to this manual page? Use this URL:
<
http://star2.abcm.com/cgi-bin/bsdi-man?query=reallocarray&sektion=3bsd&manpath=>

home | help