REALLOCARRAY

Section: Misc. Reference Manual Pages (3bsd)
Page Index

BSD mandoc
 

NAME

reallocarray - memory allocation and deallocation  

LIBRARY

Lb libbsd  

SYNOPSIS

In stdlib.h (See libbsd(7) for include usage.) Ft void * Fn reallocarray void *ptr size_t nmemb size_t size  

DESCRIPTION

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 .  

SEE ALSO

malloc(3), calloc(3), alloca(3)  

HISTORY

Fn reallocarray appeared in Ox 5.6 , glibc 2.26.


 

Index

NAME
LIBRARY
SYNOPSIS
DESCRIPTION
RETURN VALUES
SEE ALSO
HISTORY