为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

正在回答

4 回答

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

0 回复 有任何疑惑可以回复我~
#1

Mr_Tory 提问者

非常感谢!
2018-01-09 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

我加上了

delete p;

p=NULL;

没有报错

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

Mr_Tory 提问者

他是程序默认执行的吗?不用自己再写delete p;吗?我写上后就报错了。
2017-04-17 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信