为什么使用指针的复制与memcpy

问题描述 投票:0回答:1

为什么使用循环复制:

    for (int i = 0; i < size; i++) {
        dst[i] = src[i];
    }

不等于:

    memcpy(dst, src, size);

在DST和SRC之间存在重叠?

c++ memory copy overlap
1个回答
0
投票
  • memcpy()
    不能安全处理重叠的内存:
memcpy(dst, src, size); // Can corrupt data if src and dst overlap
  • loop通过一次复制一个元素来处理重叠:
for (int i = 0; i < size; i++) {
    dst[i] = src[i]; // Safe even with overlap
}

为了安全的重叠处理,请使用

memmove()
而不是:

memcpy()
    
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.