Копирование массива в массив

Ребят, всем привет, сразу скажу, ответа на стэковерфлоу нету, поэтому создаю новый вопрос.

Подскажите пожалуйста, правильно ли я копирую один массив в другой? На уроке с ютуба автор удаляет 1-ый массив, и выделяет для него новую память, а только потом выполняет функцию копирования, зачем? Я пробовал, работает и так, и так, но я не вижу смысла удалять старый массив и выделять ему новую память, если значения отлично присваиваются на старые ячейки в памяти. Объясните, нужно ли делать так, как автор, если да, то зачем мы выделяем новую память массиву?

Вот код:

        #include <iostream>

void FillArray(int* arr, const int size)
{
    for (int i = 0; i < size; )
    {
        bool AlreadyThere = false;
        int RandomNumber = rand() % size;
        for (int j = 0; j < i; j++)
        {
            if (RandomNumber == arr[j])
            {
                AlreadyThere = true;
                break;
            }
        }

        if (!AlreadyThere)
        {
            arr[i] = RandomNumber;
            i++;
        }
    }
}

void PrintArray(const int* arr, const int size)
{
    for (int i = 0; i < size; i++)
    {
        std::cout << arr[i] << "\t";
    }
    std::cout << std::endl;
}

void CopyArray(int* arr1, int* arr2, const int size) // Присваиваем каждому элементу первого массива значение каждого элемента второго массива
{
    for (int i = 0; i < size; i++)
    {
        arr1[i] = arr2[i];
    }
}

int main()
{
    setlocale(LC_ALL, "Rus");
    int size;
    std::cout << "Введите размер массивов: ";
    std::cin >> size;
    int* arr1 = new int[size];
    int* arr2 = new int[size];

    FillArray(arr1, size);
    std::cout << "1 массив: " << "\t";
    PrintArray(arr1, size);
    FillArray(arr2, size);
    std::cout << "2 массив: " << "\t";
    PrintArray(arr2, size);
//  delete[] arr1; Это делает автор

    std::cout << "=========================================================================================" << std::endl;
//  arr1 = new int[size]; Это делает автор
    CopyArray(arr1, arr2, size);
    std::cout << "1 массив: " << "\t";
    PrintArray(arr1, size);
    std::cout << "2 массив: " << "\t";
    PrintArray(arr2, size);

}

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

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

Если массивы arr1 и arr2 одинаковой размерности тогда выделять новую память под arr2 не нужно. Но если длина arr1 не совпадает с длиной arr2 тогда необходимо создать новый массив длиной равной arr1.

→ Ссылка