std::memmove(3) C++ Standard Libary std::memmove(3) NAME std::memmove - std::memmove Synopsis Defined in header <cstring> void* memmove( void* dest, const void* src, std::size_t count ); Copies count characters from the object pointed to by src to the object pointed to by dest. Both objects are reinterpreted as arrays of unsigned char. The objects may overlap: copying takes place as if the characters were copied to a temporary character array and then the characters were copied from the array to dest. If either dest or src is an invalid or null pointer, the behavior is un- defined, even if count is zero. If the objects are potentially-overlapping or not TriviallyCopyable, the behavior of memmove is not specified and may be undefined. 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 Return value dest Notes std::memmove may be used to implicitly create objects in the destination buffer. Despite being specified "as if" a temporary buffer is used, actual im- plementations of this function do not incur the overhead of double copying or extra memory. For small count, it may load up and write out registers; for larger blocks, a common approach (glibc and bsd libc) is to copy bytes forwards from the begin- ning of the buffer if the destination starts before the source, and backwards from the end otherwise, with a fall back to std::memcpy when there is no overlap at all. Where strict aliasing prohibits examining the same memory as values of two different types, std::memmove may be used to convert the values. Example // Run this code #include <cstring> #include <iostream> int main() { char str[] = "1234567890"; std::cout << str << '\n'; std::memmove(str + 4, str + 3, 3); // copies from [4, 5, 6] to [5, 6, 7] std::cout << str << '\n'; } Output: 1234567890 1234456890 See also memcpy copies one buffer to another (function) memset fills a buffer with a character (function) copies a certain amount of wide characters between two, wmemmove possibly overlapping, arrays (function) copy copies a range of elements to a new location copy_if (function template) (C++11) copy_backward copies a range of elements in backwards order (function template) is_trivially_copyable checks if a type is trivially copyable (C++11) (class template) C documentation for memmove http://cppreference.com 2024.06.10 std::memmove(3)
NAME | Synopsis | Parameters | Return value | Notes | Example | Output: | See also
Want to link to this manual page? Use this URL:
<https://man.FreeBSD.org/cgi/man.cgi?query=std::memmove&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>