При попытке перезаписи динамического массива программа работает неправильно С++

Суть программы: сначала записывается динамический массив, который том можно изменить, записав в него новые значения. Насколько понимаю в C++ для того, чтобы изменить количество элементов в динамическом массиве его необходимо пересоздать, т.е удалить изначальный массив и создать новый с необходимым числом элементов. Я так попытался сделать, и вроде программа работает, но потом при сортировке массива и вывода его в консоль возникают значения, которые не должны были быть в самом массиве. В VS возникает предупреждение, что я использую неинициализированную arr[i]. Суть вопроса: правильно ли я обращаюсь с динамическими массивами, и если неправильно, то как записать эту задачу, чтобы программа работала корректно?

#include <iostream>

using namespace std;

int main() {
   setlocale(LC_ALL, "Russian");
   int size;
   cout << "Введите размер массива: ";
   cin >> size;
   cout << endl;
   int* arr = new int[size];
   cout << "Введите массив:" << endl;
   for (int i = 0; i < size; i++)
   {
       cin >> arr[i];
   }
   for (int i = 0; i < size; i++)
   {
       cout << "arr[" << i + 1 << "] = " << arr[i] << endl;
   }
   int exit = 0;
   int choice = 1;
   while (exit == 0) {
       cout << "Введите '1', если хотите переписать массив" << endl
           << "Введите '5', если хотите выйти из программы" << endl;
       cin >> choice;
       switch (choice) {
       case 1: {

           cout << "Введите размер массива: ";
           cin >> size;
           delete [] arr;
           int* arr = new int[size];
           for (int i = 0; i < size; i++)
           {
               cin >> arr[i];
           }
           for (int i = 0; i < size; i++)
           {
               cout << "arr[" << i + 1 << "] = " << arr[i] << endl;
           }
           break;
       }
       case 5: {
           exit = 1;
           break;
       }
       }


   }
   delete[] arr;
}

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