/* memmove(0 + 2, 0 + 2 + 4, sizeof(void*) * (10 - 2)); вот тут ошибка: явно, что с 6 позиции у нас осталось только 4 элемента, а третий параметр равен 8 */ - тут мой касяк memmove(0 + 2, 0 + 2 + 4, sizeof(void*) * (10 - 4)); т.е. как бы надо перемещать 6 элементов, но у нас то всего 4 осталось.