2 weixin 29490361 weixin_29490361 于 2015.07.02 15:42 提问

新手菜鸟求教,程序运行到delete就弹出

正在写删除链表中delete的部分,但是程序一运行到delete语句就弹出了,问下是为什么,有可能是什么原因造成的。在线等图片说明图片说明

6个回答

bdmh
bdmh   Ds   Rxr 2015.07.02 15:48

是不是pt已经不是最初的new时候的pt,这样delete就会报错

weixin_29490361
weixin_29490361 我看看
2 年多之前 回复
u012707283
u012707283   2015.07.02 15:52

delete释放的是new开辟的空间,new是在堆(也叫自由存储区)上开辟空间,delete不能释放栈中空间,栈中空间由系统自动释放

Tiger_Zhao
Tiger_Zhao   Rxr 2015.07.02 16:00

delete语句是释放内存,你真正从链表中删除节点的代码在哪里?
其它节点/头指针还指向这块内存,你先释放了,后面的指针访问当然崩溃了。

weixin_29490361
weixin_29490361 已经不指向这里了
2 年多之前 回复
oyljerry
oyljerry   Ds   Rxr 2015.07.02 16:38

估计你delete释放的指针已经不合法,或者指针被修改了,导致释放有问题

weixin_29490361
weixin_29490361 指针被修改了是指什么,指向的节点?
2 年多之前 回复
max_min_
max_min_   Rxr 2015.07.02 23:44

pt = head
代码里看不到head是如何来的

确认下head是否是自己new出来的,是否是有效的?

miracle_yao
miracle_yao   2015.07.04 10:45

应该new和delete的指针对不上

Csdn user default icon
上传中...
上传图片
插入图片