std::memmove
来自cppreference.com
定义于头文件 <cstring>
|
||
void* memmove( void* dest, const void* src, std::size_t count ); |
||
从 src
所指向的对象复制 count
个字节到 dest
所指向的对象。两个对象都被转译成 unsigned char 的数组。
如同复制字符到临时数组,再从该数组到 dest
一般发生复制。
若 dest
或 src
为非法或空指针则行为未定义,即使 count
为零。
若对象潜在重叠或非可平凡复制 (TriviallyCopyable) ,则 memmove
的行为未指定,且可能未定义。
参数
dest | - | 指向复制目的的内存位置的指针 |
src | - | 指向复制来源的内存位置的指针 |
count | - | 要复制的字节数 |
返回值
dest
注解
std::memmove
可用于在目标缓冲区中隐式创建对象。
尽管说明了“如同”使用临时缓冲区,此函数的实际实现不会带来二次复制或额外内存的开销。常用方法( glibc 和 bsd libc )是若目标在源之前开始,则从缓冲区开始正向复制,否则从末尾反向复制,完全无重叠时回落到更高效的 std::memcpy 。
在严格别名使用禁止检验同一内存为二个不同类型的值处,可用 std::memmove
转换值。
示例
运行此代码
输出:
1234567890 1234456890
参阅
复制一个缓冲区到另一个 (函数) | |
以一个字符填充缓冲区 (函数) | |
在两个可能重叠的数组间复制一定量宽字符 (函数) | |
(C++11) |
将某一范围的元素复制到一个新的位置 (函数模板) |
按从后往前的顺序复制一个范围内的元素 (函数模板) | |
(C++11) |
检查类型是否可平凡复制 (类模板) |