##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::memcpy

From cppreference.com
< cpp‎ | string‎ | byte

Defined in header `<cstring>` |  |
void* memcpy( void* dest, const void* src, std::size_t count ); |  |

Copies `count` bytes from the object pointed to by `src` to the object pointed to by `dest`.

If the objects overlap, the behavior is undefined. If the objects are not trivially copyable (e.g. scalars, arrays, C-compatible structs), the behavior is undefined.

### [edit] Parameters

dest | - | pointer to the memory location to copy to
src | - | pointer to the memory location to copy from
count | - | number of bytes to copy

### [edit] Return value

`dest`

### [edit] Example

Run this code

    #include <iostream>
    #include <cstring>

    int main()
    {
        char source[] = "once upon a midnight dreary...";
        char dest[4];

        std::memcpy(dest, source, sizeof dest);

        for (char c : dest) {
            std::cout << c << '\n';
        }
    }

Output:

    o
    n
    c
    e

### [edit] See also

memmove | moves one buffer to another (function) [edit]
copy copy_if (C++11) | copies a range of elements to a new location (function template) [edit]
copy_backward | copies a range of elements in backwards order (function template) [edit]
is_trivially_copyable (C++11) | checks if a type is trivially copyable (class template) [edit]
C documentation for memcpy

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/string/byte/memcpy&oldid=58992"