При попытке перезаписи динамического массива программа работает неправильно С++
Суть программы: сначала записывается динамический массив, который том можно изменить, записав в него новые значения. Насколько понимаю в 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;
}