解决报错:AddressSanitizer: heap-buffer-overflow

简介: leetcode使用AddressSanitizer检查内存是否存在非法访问。报此错,主要是访问了非法内容。解决方法:数组访问越界,导致此错,后来发现是在访问二维数组的边界row和col弄反了。。

leetcode上报错:

=================================================================
==42==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x60c000000888 at pc 0x00000034f486 bp 0x7ffd5554bb10 sp 0x7ffd5554bb08
READ of size 8 at 0x60c000000888 thread T0
    #4 0x7fb0243d90b2  (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
Address 0x60c000000888 is a wild pointer.
Shadow bytes around the buggy address:
  0x0c187fff80c0: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
  0x0c187fff80d0: fd fd fd fd fd fd fd fa fa fa fa fa fa fa fa fa
  0x0c187fff80e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fa
  0x0c187fff80f0: fa fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00
  0x0c187fff8100: 00 00 00 00 00 00 00 fa fa fa fa fa fa fa fa fa
=>0x0c187fff8110: fa[fa]fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c187fff8120: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c187fff8130: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c187fff8140: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c187fff8150: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c187fff8160: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
  Shadow gap:              cc
==42==ABORTING

leetcode使用AddressSanitizer检查内存是否存在非法访问。报此错,主要是访问了非法内容。

解决方法:数组访问越界,导致此错,后来发现是在访问二维数组的边界row和col弄反了。。


【注意】

LeetCode系统在执行代码时,系统都会判断数组越界问题,并直接报错,根据经验leetcode在用到数组或指针时,做两种处理:


1.定义指针时,需要申请内存块,如 int* data = malloc(SIZE * sizeof(int));后面访问指针时,不要大于SIZE值的地址范围。

2.定义数组,如int data[SIZE] 后,访问数组时,不要大于SIZE值的地址范围。


相关文章
|
安全 数据安全/隐私保护 块存储
cephx: ceph的认证和加密协议
Ceph作为一个分布式存储系统,支持对象存储、块设备和文件系统。为了在网络传输中防止数据被篡改,做到较高程度的安全性,加入了Cephx加密认证协议。其目的是识别身份,加密、验证传输中的数据。 在ceph系统中,元数据保存在一个叫做ceph-mon的进程中,也可以称为monitor节点,系统可以有多个monitor副本节点,用paxos保持数据一致性。 这里不谈paxos,也不谈多个monitor
5471 0
|
搜索推荐 算法 C语言
【排序算法】八大排序(下)(c语言实现)(附源码)
本文继续学习并实现了八大排序算法中的后四种:堆排序、快速排序、归并排序和计数排序。详细介绍了每种排序算法的原理、步骤和代码实现,并通过测试数据展示了它们的性能表现。堆排序利用堆的特性进行排序,快速排序通过递归和多种划分方法实现高效排序,归并排序通过分治法将问题分解后再合并,计数排序则通过统计每个元素的出现次数实现非比较排序。最后,文章还对比了这些排序算法在处理一百万个整形数据时的运行时间,帮助读者了解不同算法的优劣。
480 7
|
7月前
|
机器人 Go
【LeetCode 热题100】网格路径类 DP 系列题:不同路径 & 最小路径和(力扣62 / 64 )(Go语言版)
本篇介绍了网格路径类动态规划问题,涵盖 LeetCode 第 62 题“不同路径”和第 64 题“最小路径和”。通过定义状态 `dp[i][j]` 和转移方程,分别解决路径计数与最小代价问题。两题均支持一维数组优化空间复杂度。总结对比了两题的异同,并延伸至带障碍路径、三角形路径等问题,帮助读者掌握网格 DP 的核心思路:明确状态、写出转移、找准边界。
304 48
|
Ubuntu 关系型数据库 MySQL
libmysqlclient.so.18(libmysqlclient.so.20 libmysqlclien.so) => not found
libmysqlclient.so.18(libmysqlclient.so.20 libmysqlclien.so) => not found
1545 0
libmysqlclient.so.18(libmysqlclient.so.20 libmysqlclien.so) => not found
|
存储 编译器 C语言
【C语言】指针大小知多少 ?一场探寻C语言深处的冒险 !
在C语言中,指针的大小(即指针变量占用的内存大小)是由计算机的体系结构(例如32位还是64位)和编译器决定的。
1475 9
|
存储 设计模式 算法
【C++ 泛型编程 高级篇】 C++ 17 解析std::apply 的多种应用场景(一)
【C++ 泛型编程 高级篇】 C++ 17 解析std::apply 的多种应用场景
1219 0
【AD速成】半小时入门AltiumDesigner之创建工程(一)
【AD速成】半小时入门AltiumDesigner之创建工程(一)
1339 2
|
存储 机器学习/深度学习 人工智能
深入浅出 AI 智能体(AI Agent)|技术干货
随着人工智能技术的发展,智能体(AI Agents)逐渐成为人与大模型交互的主要方式。智能体能执行任务、解决问题,并提供个性化服务。其关键组成部分包括规划、记忆和工具使用,使交互更加高效、自然。智能体的应用涵盖专业领域问答、资讯整理、角色扮演等场景,极大地提升了用户体验与工作效率。借助智能体开发平台,用户可以轻松打造定制化AI应用,推动AI技术在各领域的广泛应用与深度融合。
33129 1
|
存储 缓存 分布式计算
详解HBase中的“WAL”(Write-Ahead Log)
【8月更文挑战第31天】
1158 0
|
NoSQL Unix 编译器
GDB调试无行号,报dwarf error问题解决
GDB调试无行号,报dwarf error问题解决
1331 0

热门文章

最新文章