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

来源:5-1 队列的实际应用

Mr_Tory

2017-04-15 21:30

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

写回答 关注

4回答

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

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

    Mr_Tor...

    非常感谢!

    2018-01-09 10:33:50

    共 1 条回复 >

  • 阿星灬
    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

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

    Mr_Tor...

    他是程序默认执行的吗?不用自己再写delete p;吗?我写上后就报错了。

    2017-04-17 10:39:47

    共 1 条回复 >

数据结构探险—队列篇

与现实最为贴近的数据结构-队列,带大家进入数据结构的美妙世界

110035 学习 · 170 问题

查看课程

相似问题