Распределенная динамическая память всегда удаляется?
Я не понимаю, у меня есть оператор switch, который предлагает пользователям создавать динамически выделенную память, отображать все списки и, наконец, удалять их (случай 3, который напечатан ниже.)
Когда я выбираю случай 3 в программе и ввожу что-либо, кроме "y" или "Y", он все равно удаляет список, и я не понимаю, почему...
Если кто-то может помочь мне здесь, я был бы очень признателен, что:
case 3:
cout << "Which list did you want to delete?" << endl
<< "List: ";
cin >> i;
i--;
if (dynArray[i] == NULL){
noListExist();
break;
}
else
printoutAllLists(dynArray[i], arraySize[i], i);
cout << "Are you sure? ('y' or 'n'):" << endl
<< "Confirm: ";
cin >> j;
if (j == 'y' || 'Y'){
delete[] dynArray[i];
dynArray[i] = NULL;
}
else
break;
break;
2 ответа
Решение
Вам также нужно {...} после первого else, чтобы определить экстент оператора else. В вашем нынешнем утверждении else есть только одна строка.
if (j == 'y' || 'Y')
всегда верно, так как правая часть ||
т.е. 'Y'
ненулевой, который оценивается, когда j
не равно 'y'
Используйте:
if (j == 'y' || j== 'Y')
Там может быть еще несколько ошибок, и шансы утечки памяти тоже