c ++使用memcpy在数组内复制
c++ using memcpy to copy inside the array
如果我有一个元素数组,可以使用memcpy将一些数据从数组的后面复制到前面吗
在代码中呈现:
int a[5] = {1,2,3,4,5};
memcpy(a, a + 2, 3 * sizeof(int));
如你所见,有些部分被复制到前面的其他地方,然后被覆盖(数字 3)。
memcpy 之后的数组是 {3, 4, 5, 4, 5},但是这会调用未定义的行为还是做这样的事情是完全有效的?我正在使用 C++ 和 VS2017 编译器。
这不行:memcpy
要求源区域和目标区域不重叠。 C 专门为区域 do 重叠的情况提供函数 memmove
。
既然你在这里被标记为C++,你也可以考虑使用std::copy
因为它的约束比memcpy
弱:只是目标迭代器必须在要复制的范围之外,这你的场景就是这样。
如果我有一个元素数组,可以使用memcpy将一些数据从数组的后面复制到前面吗
在代码中呈现:
int a[5] = {1,2,3,4,5};
memcpy(a, a + 2, 3 * sizeof(int));
如你所见,有些部分被复制到前面的其他地方,然后被覆盖(数字 3)。
memcpy 之后的数组是 {3, 4, 5, 4, 5},但是这会调用未定义的行为还是做这样的事情是完全有效的?我正在使用 C++ 和 VS2017 编译器。
这不行:memcpy
要求源区域和目标区域不重叠。 C 专门为区域 do 重叠的情况提供函数 memmove
。
既然你在这里被标记为C++,你也可以考虑使用std::copy
因为它的约束比memcpy
弱:只是目标迭代器必须在要复制的范围之外,这你的场景就是这样。