问答详情
源自:5-1 队列的实际应用

customer作为队列元素时不用删除指针p吗?

在使用int作为队列元素时,老师最后一行有delete p;p=NULL;删除MyQueue指针。然而在用customer作为元素时,老师将这行代码注释掉,并且之后也没有加上。我自己在写的时候加上发现运行时会报错关于指针使用不当,请问这是为什么?

提问者:Mr_Tory 2017-04-15 21:30

个回答

  • qq_超人_18
    2017-12-26 14:11:50
    已采纳

    系统按顺序应该先删除customer的内存,然后再是p的内存。而customer的内存是栈实例化的,所以只有执行了return 0;后才会删除。使用了delete p;会导致系统先删除queue的内存,顺序不对,所以执行出现问题。所以不能加delete p;在结束整个程序后就会自动删除。我个人见解,删除内存主要运用在一个程序没有完结但一个类或函数已经完结的情况下,可以减少内存泄漏。如果整个程序都结束,就不存在内存泄漏的问题了。

  • 阿星灬
    2018-07-27 19:50:45

    我也出错了  把Customer 改成堆上申请内存  还是会异常

  • 极速传说201466
    2017-04-25 10:57:54

    我加上了

    delete p;

    p=NULL;

    没有报错

  • 慕沐9984553
    2017-04-16 21:08:45

    会执行的,当你在请按任意键继续的界面时候,按下任意键,他会执行的哦,你仔细检查一下你的代码