Performs the following operations in order:
If dest or src is a null pointer or invalid pointer, 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 valueIf there is a suitable created object, returns a pointer to it; otherwise returns dest.
[edit] NotesDespite the specification says a temporary buffer is used, actual implementations 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 beginning 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.
#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:
[edit] Defect reportsThe following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR Applied to Behavior as published Correct behavior LWG 4064 C++98 it was unclear whether the returned pointer points to a suitable created object made clear [edit] See alsoRetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4