NAME
memset
—
write a byte to byte string
LIBRARY
library “libc”
SYNOPSIS
#include
<string.h>
void *
memset
(void
*dest, int c,
size_t len);
errno_t
memset_s
(void
*dest, rsize_t
destsz, int c,
rsize_t len);
DESCRIPTION
Thememset
()
function writes len bytes of value
c (converted to an unsigned char)
to the string dest. Undefined behaviour from
memset
(), resulting from storage overflow, will occur
if len is greater than the the length of buffer
dest. The behaviour is also undefined if
dest is an invalid pointer.
The
memset_s
()
function behaves the same as memset
() except that an
error is returned and the currently registered runtime-constraint handler is
called if dest is a null pointer,
destsz or len is greater than
RSIZE_MAX
, or len is greater
than destsz (buffer overflow would occur). The
runtime-constraint handler is called first and may not return. If it does
return, an error is returned to the caller. Like
explicit_bzero(3), memset_s
() is not
removed through Dead Store Elimination (DSE), making it useful for clearing
sensitve data. In contrast memset
() function may be
optimized away if the object modified by the function is not accessed again.
To clear memory that will not subsequently be accessed it is advised to use
memset_s
() instead of
memset
(). For instance, a buffer containing a
password should be cleared with memset_s
() before
free(3).
RETURN VALUES
The memset
() function returns its first
argument. The memset_s
() function returns zero on
success, non-zero on error.
SEE ALSO
STANDARDS
The memset
() function conforms to
ISO/IEC 9899:1990 (“ISO C90”).
memset_s
() conforms to: ISO/IEC
9899:2011 (“ISO C11”) K.3.7.4.1.