summaryrefslogtreecommitdiff
path: root/doc/glibc-functions/reallocarray.texi
blob: b1337eff21d9bd298a05df642adeed07268511b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
@node reallocarray
@subsection @code{reallocarray}
@findex reallocarray

Documentation:
@itemize
@item
@ifinfo
@ref{Changing Block Size,,Changing the Size of a Block,libc},
@end ifinfo
@ifnotinfo
@url{https://www.gnu.org/software/libc/manual/html_node/Changing-Block-Size.html},
@end ifnotinfo
@item
@uref{https://www.kernel.org/doc/man-pages/online/pages/man3/reallocarray.3.html,,man reallocarray}.
@end itemize

Gnulib module: reallocarray

Allocate multiple memory locations of a fixed size with integer overflow
protection.
Glibc Manual: @url{https://www.gnu.org/software/libc/manual/html_node/Changing-Block-Size.html#Changing-Block-Size}

Portability problems fixed by Gnulib:
@itemize
@item
This function is missing on many platforms:
glibc 2.25, macOS 11.1, FreeBSD 10, NetBSD 7, OpenBSD 5.5, Minix 3.3.0, AIX 7.2, HP-UX 11, IRIX, Solaris 11.4, Cygwin 1.7.x, mingw, MSVC 14, Android 9.0.

@item
On some platforms, @code{reallocarray (n, s)} can succeed even if
multiplying @code{n} by @code{s} would exceed @code{PTRDIFF_MAX},
which can lead to undefined behavior later:
FreeBSD 13, NetBSD 9, OpenBSD 6, musl 1.2.
@end itemize

Portability problems not fixed by Gnulib:
@itemize
@end itemize