MEMORY(3C) Standard C Library Functions MEMORY(3C)
NAME
memory,
memccpy,
memchr,
memcmp,
memcpy,
memmem,
memmove,
memrchr,
memset - memory operations
SYNOPSIS
#include <string.h> void * memccpy(
void *restrict s1,
const void *restrict s2,
int c,
size_t n);
void * memchr(
void *s,
int c,
size_t n);
int memcmp(
const void *s1,
const void *s2,
size_t n);
void * memcpy(
void *restrict s1,
const void *restrict s2,
size_t n);
void * memmem(
const void *l,
size_t l_len,
const void *s,
size_t s_len);
void * memmove(
void *s1,
const void *s2,
size_t n);
void * memrchr(
void *s,
int c,
size_t n);
void * memset(
void *s,
int c,
size_t n);
DESCRIPTION
These functions operate as efficiently as possible on memory areas
(arrays of bytes bounded by a count, not terminated by a null
character). They do not check for the overflow of any receiving memory
area.
The
memccpy() function copies bytes from memory area
s2 into
s1,
stopping after the first occurrence of
c (converted to an
unsigned char) has been copied, or after
n bytes have been copied, whichever
comes first. It returns a pointer to the byte after the copy of
c in
s1, or a NULL pointer if
c was not found in the first
n bytes of
s2.
The
memchr() function returns a pointer to the first occurrence of
c (converted to an
unsigned char) in the first
n bytes (each interpreted
as an
unsigned char) of memory area
s, or a NULL pointer if
c does not
occur.
The
memrchr() function behaves similarly to the
memchr() function,
except that the memory area is searched in reverse from the last byte.
The
memcmp() function compares its arguments, looking at the first
n bytes (each interpreted as an
unsigned char), and returns an integer
less than, equal to, or greater than 0, according as
s1 is less than,
equal to, or greater than
s2 when taken to be unsigned characters.
The
memcpy() function copies
n bytes from memory area
s2 to
s1 It
returns
s1. If copying takes place between objects that overlap, the
behavior is undefined. In such cases, use
memmove() instead.
The
memmem() function searches for the
s_len long byte pattern
s in the
memory region starting at
l for
l_len bytes. If a match is found, a
pointer to the starting location in
l is returned. If no match is
found,
l_len is zero,
s_len is zero, or
l_len is less than
s_len then a
NULL pointer is return.
The
memmove() function copies
n bytes from memory area
s2 to memory
area
s1. Copying between objects that overlap will take place
correctly. It returns
s1.
The
memset() function sets the first
n bytes in memory area
s to the
value of
c (converted to an
unsigned char). It returns
s.
USAGE
Using
memcpy() might be faster than using
memmove() if the application
knows that the objects being copied do not overlap.
INTERFACE STABILITY
CommittedMT-LEVEL MT-SafeSEE ALSO
string(3C),
attributes(7),
standards(7)NOTES
Overlap between objects being copied can arise even when their
(virtual) address ranges appear to be disjoint; for example, as a
result of memory-mapping overlapping portions of the same underlying
file, or of attaching the same shared memory segment more than once.
illumos January 25, 2022 illumos