LeetCode “AddressSanitizer:heat-use-after-free on address“问题解决方法

news/2025/1/16 2:59:04/

heat-use-after-free : 访问堆上已经被释放的内存地址

现象:同样代码在LeetCode上报错,但是自己在IDE手动打印并不会报错

个人猜测,这个bug可能来源于LeetCode后台输出打印链表的代码逻辑问题。

问题描述

题目来自LeetCode的86.链表分隔
运行如下代码时,发生报错

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* partition(ListNode* head, int x) {cout << "dfddf" << endl;ListNode* head_s = new ListNode(-1), *p_s = head_s;ListNode* head_g = new ListNode(-1), *p_g = head_g;p_g = head_g;cout << "fdfdfdf" << endl;while (head != nullptr){if (head -> val < x){p_s -> next = head;p_s = p_s -> next;}else{p_g -> next = head;p_g = p_g -> next;}head = head -> next;}p_s -> next = head_g -> next;return head_s -> next;}
};

报错示例

问题解释

打印日志debug了半天也没知其然,于是上网搜了一圈,基本说的都是链表问题当中使用delete会在LeetCode平台上发生这个问题。还有一个直接说是指针指向了自己,也没给出个解决方法。

偶然在stackoverflow上看到了一个相似的问题

stackoverflow链接
解决回答

也就是说没有正确的结束链表,就像上面图那样链表末尾并没有结束而又连回来到了中间某个节点上,而我猜测LeetCode给一个链表头打印出链表的代码是打印完一个节点后就自动帮你把节点给释放掉了,而你链表末尾又指向了之前已被释放的节点。

解决方法

在链表结尾指向nullptr

p_g -> next = nullptr;

http://www.ppmy.cn/news/1351805.html

相关文章

C#,数值计算,矩阵的行列式(Determinant)、伴随矩阵(Adjoint)与逆矩阵(Inverse)的算法与源代码

本文发布矩阵&#xff08;Matrix&#xff09;的一些初级算法。 一、矩阵的行列式&#xff08;Determinant&#xff09; 矩阵行列式是指矩阵的全部元素构成的行列式&#xff0c;设A(a)是数域P上的一个n阶矩阵&#xff0c;则所有A(a)中的元素组成的行列式称为矩阵A的行列式&…

“反内卷”代码书写原则

有人相爱&#xff0c;有人夜里开车看海。有人看着这些代码一句话也说不出来。这是一个你的项目应该遵循的垃圾代码书写准则&#xff0c;只有这样写了才能让人看不懂&#xff0c;这才是真正的反内卷之道&#xff0c;请恪守以下原则&#xff0c;时刻铭记&#xff0c;切勿反向操作…

【JavaScript】如何压缩和解压数组

两个或多个数组的 Zipping&#xff0c;这就像把不同口袋里的零食倒在一起&#xff0c;拼成一盒豪华版“数组什锦礼包”。想象一下 const arrays [[a, b], [1, 2], [true, false]]; const zipped [[a, 1, true], [b, 2, false]]; 瞧&#xff0c;现在是不是觉得Zipping这个概念…

【go语言】一个简单HTTP服务的例子

一、Go语言安装 Go语言&#xff08;又称Golang&#xff09;的安装过程相对简单&#xff0c;下面是在不同操作系统上安装Go语言的步骤&#xff1a; 在Windows上安装Go语言&#xff1a; 访问Go语言的官方网站&#xff08;golang.org&#xff09;或者使用国内镜像站点&#xff0…

模型 煤气灯效应

系列文章 主要是 分享 思维模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。情感操控&#xff0c;认知扭曲。 1 煤气灯效应的应用 1.1 电影《煤气灯下》故事 宝拉继承了姨妈的一大笔遗产&#xff0c;居心不良的安东得知后&#xff0c;就动起了这笔钱的念头。安东利用…

山东:优化提升恶劣天气高影响路段保障工作

2023年9月1日&#xff0c;山东省气象局联合省公安厅、省交通运输厅联合印发《2023年山东省恶劣天气高影响路段优化提升气象保障工作方案》&#xff08;以下简称《方案》&#xff09;&#xff0c;扎实推进恶劣天气高影响路段优化提升气象保障工作&#xff0c;为公路网安全畅通提…

高斯模糊滤镜

高斯模糊滤镜 import cv2# 读取图像 image cv2.imread(1.jpg)# 高斯模糊滤镜 blurred cv2.GaussianBlur(image, (15, 15), 0)# 保存处理后的图像 cv2.imwrite(blurred_image.jpg, blurred)# 显示原始图像和处理后的图像 cv2.imshow(Original Image, image) cv2.imshow(Blurre…

L2-005 集合相似度

一、题目 二、解题思路 Nc​是两个集合都有的不相等整数的个数&#xff1a;A∩B ;Nt​是两个集合一共有的不相等整数的个数&#xff1a;A∪B A.size() B.size() - A∩B ; 三、代码 #include<iostream> using namespace std; #include<set> int main() {int n;…