分配的动态内存总是被删除?

Dynamic Memory Allocated is always deleted?

不明白,我有一个switch语句,让用户创建动态分配的内存,显示所有列表,最后删除它们(案例3,打印在下面。)

当我在程序中 select 情况 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;
if (j == 'y' || 'Y') 

始终为真,因为 || 的右侧,即 'Y' 是非零值,当 j 不等于 'y' 时对其进行评估

使用:

if (j == 'y' || j== 'Y')

可能还有一些错误,也有内存泄漏的可能

您还需要在第一个 else 之后使用 {...} 来定义 else 语句的范围。就目前而言,您的 else 语句中只有一行。