是否已删除分配的动态内存?

时间:2015-04-21 23:33:22

标签: c++ switch-statement case dynamic-memory-allocation

我不明白,我有一个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 个答案:

答案 0 :(得分:3)

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

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

使用:

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

可能会有更多错误,也有内存泄漏的可能性

答案 1 :(得分:1)

在第一个else之后还需要{...}来定义else语句的范围。现在,你的else语句中只有一行。