C++ c++;使用memcpy在阵列内部进行复制
如果我有一个元素数组,可以使用memcpy将一些数据从数组的后面复制到前面吗 以代码表示:C++ c++;使用memcpy在阵列内部进行复制,c++,memcpy,C++,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编译器。< P>这是不行的: MeMCPY 要求源区和目的区不重叠。C专门为区域重叠的情况提
int a[5] = {1,2,3,4,5};
memcpy(a, a + 2, 3 * sizeof(int));
正如您所看到的,一些零件被复制到前面的另一个位置,然后被覆盖(编号3)
memcpy之后的数组是{3,4,5,4,5},但这会调用未定义的行为吗?或者这样做完全有效吗?我使用C++和VS2017编译器。< P>这是不行的:<代码> MeMCPY 要求源区和目的区不重叠。C专门为区域重叠的情况提供函数
memmove
既然你在这里加上C++,你也可以考虑使用<代码> STD::复制< /COD>,因为它的约束比
man memcpy
:“内存区域不得重叠。”谢谢亨利·门克,您可以将其作为答案发布,这样我就可以接受iTunesstd::copy
。