std:: memmove
|
定义于头文件
<cstring>
|
||
|
void
*
memmove
(
void
*
dest,
const
void
*
src,
std::
size_t
count
)
;
|
||
按顺序执行以下操作:
- 隐式创建 位于 dest 的对象。
- 从 src 指向的对象复制 count 个字符(如同类型为 unsigned char ,下同)到临时数组 arr (包含 count 个字符),其中 arr 不与 dest 和 src 指向的对象重叠。
- 从 arr 复制 count 个字符到 dest 指向的对象。
如果 dest 或 src 是 空指针 或 无效指针 ,则行为未定义。
目录参数
返回值如果存在一个 已创建的合适对象 ,则返回指向它的指针;否则返回 dest 。 注释尽管规范说明会使用临时缓冲区,但该函数的实际实现不会产生双重拷贝或额外内存的开销。对于较小的 count ,可能直接加载和写入寄存器;对于较大的数据块,常见实现方案(glibc和bsd libc)是:若目标起始位置在源之前,则从缓冲区起始处向前拷贝字节;反之则从末尾向后拷贝;当完全不存在重叠时,会回退到 std::memcpy 。
当
严格别名规则
禁止以两种不同类型值的形式检查同一内存区域时,可使用
示例
运行此代码
输出: 1234567890 1234456890 缺陷报告以下行为变更缺陷报告被追溯应用于先前发布的C++标准。
参阅
| |||||||||||||||||||||||||||||||||