ERROR: AddressSanitizer: heap-use-after-free on address 0x502000000078 at pc 0x55b9ce843756 ...

C++链表使用后释放错误问题解决
  1. 在进行代码提交时,出现下面的问题:
    在这里插入图片描述
    这里是链表节点放在了 priority_queue 中,将它们拿出来并进行连接的操作。

  2. 本以为这里的 heap 提示错误是我自己使用的 priority_queue 有问题,但实际上不是,通过下面的部分可以看到:
    在这里插入图片描述
    因为使用 cout << "hhh" << endll; 打印的地方已经很靠近结尾了,但仍然输出正常,所以应该是该打印的后面部分有问题,即最后一句 return newhead; 了。

  3. 测试一下 newhead ,因为这是一个链表的头节点,所以打印一下整个链表看一看。
    在这里插入图片描述
    发现问题了,是从 priority_queue 中拿出的最后一个节点的 next 没有置为 nullptr,所以导致链表循环了。

  4. 修正:最后一个节点的 next 置为 nullptr,问题解决了。
    在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值