---
name: "memmove_data"
section: "9"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/memmove/9"
---

# memmove\_data(9)

copy bytes in memory

Part of [memmove(9)](/memmove/9.md).

## NAME

**memmove**, **memmove\_data** – copy bytes in memory

## SYNOPSIS

**#include \<sys/systm.h\>**

*void* *\**\

**memmove**(*void \*dst*, *const void \*src*, *size\_t len*);

*void* *\**\

**memmove\_data**(*void \*dst*, *const void \*src*, *size\_t len*);

## DESCRIPTION

The **memmove**() function copies *len* bytes from object *src* to object *dst*. The two objects may overlap; the copy is always done in a non-destructive manner and preserves the provenance of pointers in the copied object (see [memory\_model(7)](/memory_model/7.md) for further information). The **memmove\_data**() function does the same except that it does not preserve the provenance of pointers in the copied object. On CHERI targets, the validity tag of any copied capability is explicitly cleared.

## RETURN VALUES

The **memmove**() and **memmove\_data**() functions return the original value of *dst*.

## SEE ALSO

[bcopy(9)](/bcopy/9.md), [memcpy(9)](/memcpy/9.md), [memcpy\_data(9)](/memcpy_data/9.md)

## STANDARDS

The **memmove**() function conforms to ISO/IEC 9899:1990 (“ISO C90”).

## HISTORY

The **memmove\_data**() function first appeared in FreeBSD 16.0.
