Чтение недопустимых данных

Уже пару часов ломаю голову над этой ошибкой, и совсем не понимаю в чём конкретно она заключается. "C6385: Чтение недопустимых данных из "temp": доступный для чтения объём равен "size"*4, однако считать можно только "8" байт" Реализовать хотел функцию для добавления указателя на структуру после указанного индекса

struct Performer {
    char name[10];
    char surname[10];
};
void addAfter(Performer** array, int array_size, Performer performer, int index_to_add_after)
{
    int size = array_size + 1;

    Performer** temp = new Performer * [size];

    for (int i = 0; i < size; i++) {
        temp[i] = new Performer;
    }

    *temp[size - 1] = performer;

    for (int i = 0; i < array_size; i++) {
        *temp[i] = *array[i]; // Здесь VS показывает эту ошибку
    }

    for (int i = size - 1; i > index_to_add_after; i--) {
        swap(array, i - 1, i);
    }

    delete[] array;
    array = new Performer * [size];

    for (int i = 0; i < size; i++) {
        array[i] = new Performer;
        *array[i] = *temp[i];
    }
    delete[] temp;
}

Заранее большое спасибо за содействие

edit: Решение нашёл, всё работает как и хотелось

void addAfter(Performer** array, int array_size, Performer performer, int index_to_add_after)
{
    array[array_size] = new Performer;
    *array[array_size] = performer;
    for (int i = array_size; i > index_to_add_after; i++) {
        swap(array, i - 1, i);
    }
}

Ответы (1 шт):

Автор решения: CaptainMars

Я нашёл решение проблемы, хотелось бы закрыть вопрос

void addAfter(Performer** array, int array_size, Performer performer, int index_to_add_after)
{
    array[array_size] = new Performer;
    *array[array_size] = performer;
    for (int i = array_size; i > index_to_add_after; i++) {
        swap(array, i - 1, i);
    }
}

Не знаю как до этого написал столь глупый код, видимо слишком устал и забыл что массив то я делал динамический...

→ Ссылка