Это будет перекрытие:
char arr[10];
// Code that does something
memcpy(&arr[0], &arr[3], 5);
Но это не будет:
memcpy(&arr[0], &arr[3], 2);
Если у вас есть два указателя char, p
и q
и вы вызываете memcpy(p, q, size)
, то перекрытие означает, что существует по крайней мере один байт, который принадлежит как интервалу [p,p+size]
, так и [q,q+size]
. В приведенном выше примере это элементы arr[3]
и arr[4]
.