memory.h(3head)

memory.h3head

Memory operations

Usage

#include <memory.h>

Library

Standard C library (libc, -lc)

Overview

Write

Copy

Catenate

Duplicate

Compare

Search

Versions

In some systems (Illumos), <memory.h> contains only a few of these functions, and thus <string.h> is needed.

Standards

BSD.

These functions are also provided in <string.h>, as specified by ISO C. This is a historic mistake maintained for compatibility reasons; these functions aren't string APIs.

History

SVr1, 4.3BSD.

System V (1983) introduced an initial set of mem* functions in a <memory.h> header file. 4.3BSD (1986) adopted them.

SVID Issue 1 (1985) standardized this header file, but stated that the functions would be moved to <string.h>.

XPG Issue 3 (1989) listed <memory.h> as WITHDRAWN, and stated that the functions had been moved to <string.h>.

C89 didn't standardize this header file and instead specified all these functions in <string.h>.

This merge of header files has historically confused programmers about the real purpose of these functions.

Most C libraries, including the BSDs, glibc, musl, Bionic, and Illumos continue to provide <memory.h>.

gnulib doesn't provide it, though, and instead uses <string.h>.

From man-pages 6.19-1 in Arch Linux 2026-11-01. Parsed by carta from the page's man source.