gpt4 book ai didi

c++使用memcpy在数组内复制

转载 作者:行者123 更新时间:2023-11-30 05:12:31 24 4
gpt4 key购买 nike

如果我有一个元素数组,是否可以使用 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 专门为区域确实重叠的情况提供函数memmove

因为你在这里被标记为 C++,你也可以考虑使用 std::copy 因为它的约束比 memcpy 弱:只是目标迭代器必须在外面要复制的范围,在您的场景中就是这种情况。

关于c++使用memcpy在数组内复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44490069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com