MEMSET_S(3) BSD Library Functions Manual MEMSET_S(3)NAMEmemset_s — copy a value to all bytes of a memory buffer
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#define __STDC_WANT_LIB_EXT1__ 1
#include <string.h>
errno_t
memset_s(void *s, rsize_t smax, int c, rsize_t n);
DESCRIPTION
The memset_s() function copies the value c (converted to an unsigned
char) into each of the first n bytes of the memory buffer whose starting
address is given by s.
It is a runtime-consrtaints violation if s is a null pointer, or if
either of smax or n is larger than RSIZE_MAX, or if smax is smaller than
n. If there is a runtime-constraints violation, and if s is not a null
pointer, and if smax is not larger than RSIZE_MAX, then, before reporting
the runtime-constraints violation, memset_s() copies smax bytes to the
destination.
In contrast to the memset(3) function, calls to memset_s() will never be
“optimised away” by a compiler. This property is required by the follow‐
ing sentences in section K.3.7.4.1 of :
Unlike memset(), any call to the memset_s() function shall be eval‐
uated strictly according to the rules of the abstract machine as
described in (5.1.2.3). That is, any call to the memset_s() func‐
tion shall assume that the memory indicated by s and n may be
accessible in the future and thus must contain the values indicated
by c.
RETURN VALUES
The memset_s() function returns zero for success, or a non-zero error
code if there was a runtime-constraints violation.
ERRORSmemset_s() returns the following error codes. It does not store the
error code in the global errno variable:
[EINVAL] The s argument was a null pointer.
[E2BIG] One or both of smax or n was larger than RSIZE_MAX.
[EOVERFLOW] n was larger than smax.
SEE ALSOmemset(3).
STANDARDS
The memset_s() function conforms to , except that the
set_constraint_handler_s() interface is not supported.
BSD February 21, 2012 BSD