移动一个数组并使用memcpy在给定位置插入一个新元素

swa*_*wap 2 c++ position shift memcpy

我需要移动数组并使用在给定位置插入一个新元素memcpy.

Input: 2, 5, 7, 0, 0, 0

Expected output: 2, 3, 5, 7, 0, 0

Actual output: 2, 3, 5, 0, 0, 0
Run Code Online (Sandbox Code Playgroud)

我的错了memcpy吗?(我必须使用数组 - 不是std::vectors)

#include <stdio.h>
int main()
{
    int i=0;
    int len=0;
    int a[6] = {'\0'};
    a[0]= 2;
    a[1] = 5;
    a[2]= 7;
    len=3;
    int b=0;
    b = 2;
    memcpy(a+2, a+1, b * sizeof(int));
    //memcpy(a+2, a+1, sizeof(int) * (len-1));
    a[1]=3;
    for(i=0;i<6;i++)
        printf("after %d \n", a[i]);
}
Run Code Online (Sandbox Code Playgroud)

Mik*_*our 6

从联机帮助页memcpy:

内存区域不应重叠.如果内存区域重叠,请使用memmove(3).

完整性,从C99标准:

如果在重叠的对象之间进行复制,则行为未定义.