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

# bcopy(3)

copy bytes in memory

## NAME

**bcopy** – copy bytes in memory

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

**#include \<strings.h\>**

*void*\

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

## DESCRIPTION

The **bcopy**() function copies *len* bytes from object *src* to object *dst*. The two objects may overlap. If *len* is zero, no bytes are copied.

## SEE ALSO

[memccpy(3)](/memccpy/3.md), [memcpy(3)](/memcpy/3.md), [memmove(3)](/memmove/3.md), [strcpy(3)](/strcpy/3.md), [strncpy(3)](/strncpy/3.md)

## HISTORY

A **bcopy**() function appeared in 4.2BSD. Its prototype existed previously in ⟨string.h⟩ before it was moved to ⟨strings.h⟩ for IEEE Std 1003.1-2001 (“POSIX.1”) compliance.

IEEE Std 1003.1-2008 (“POSIX.1”) removes the specification of **bcopy**() and it is marked as LEGACY in IEEE Std 1003.1-2004 (“POSIX.1”). New programs should use [memmove(3)](/memmove/3.md). If the input and output buffer do not overlap, then [memcpy(3)](/memcpy/3.md) is more efficient. Note that **bcopy**() takes *src* and *dst* in the opposite order from **memmove**() and **memcpy**().
