Hash :
af7386f1
Author :
Date :
2024-11-05T15:57:20
doc: improve documentation for malloc, realloc etc
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 malloc
@subsection @code{malloc}
@findex malloc
POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9799919799/functions/malloc.html}
Gnulib module: malloc-posix
@mindex malloc-posix
Portability problems fixed by Gnulib:
@itemize
@item
On some platforms, when the function fails it does not set @code{errno}:
mingw, MSVC 14.
@item
On some platforms, when the function fails it might set @code{errno}
to @code{EAGAIN} instead of to @code{ENOMEM}. Although POSIX allows
@code{EAGAIN}, the @code{malloc-posix} module insists on @code{ENOMEM}
which also conforms to POSIX and is GNU-compatible:
Solaris 11.4.
@item
On some platforms, @code{malloc (n)} can succeed even if @code{n}
exceeds @code{PTRDIFF_MAX}. Although this behavior is arguably
allowed by POSIX it can lead to behavior not defined by POSIX later,
so @code{malloc-posix} does not allow going over the limit.
@end itemize
@mindex malloc-gnu
Extension: Gnulib provides a module @samp{malloc-gnu} that substitutes a
@code{malloc} implementation that behaves more like the glibc implementation,
by fixing this portability problem:
@itemize
@item
@code{malloc (0)} returns @code{NULL} on success on some platforms:
AIX 7.3.
@end itemize