做leetcode过程中遇到heap-use-after-free问题的解决方法

在做leetcode 25 K个一组翻转链表题目时遇到了heap-use-after-free问题。通过分析错误定位到出错在链表反转的循环中,原因是链表反转完成后没有正确设置空指针。解决方案是在节点出栈时让出栈节点指向NULL。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

heap-use-after-free

  • 背景:leetcode 25 K个一组翻转链表
  • 用了很长时间解决这个问题,过程中心态甚至有一点小小波动。

问题截图:
在这里插入图片描述

  • 问题解释:堆在释放后使用,意思是我使用了释放后的空间吗??(看了程序没有发现问题)
  • 由于之前没有遇到过类似问题,所以选择了在网上寻找答案,看看有没有遇到相同问题的同学分享经验:
    发现有位同学分享的是delete之后再次使用空间,就会报相同错,可是我并没有使用delete。
  • 再找了一会发现没有能利用的,大多是对于这个错误的解释和工具使用方法,所以选择自己寻找错误位置然后解决。

错误代码及测试用例:

/**
 - Definition for singly-linked list.
 - struct ListNode {
 -     int val;
 -     ListNode *next;
 -     ListNode(int x) : val(x), next(NULL) {}
 - };
 */
class Solution {
   
public:
    ListNode* reverseKGroup(ListNode* head, int k) {
   
        ListNode *res=new ListNode;
        ListNode *p=head,*r=head
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值