LeetCode报错信息:==22==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x502000000100 at pc 0x5

这篇具有很好参考价值的文章主要介绍了LeetCode报错信息:==22==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x502000000100 at pc 0x5。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

错误情况(一)

报错信息

在重刷37.解数独时,写了如下代码,

class Solution {
public:
    // 根据题意,需要三个状态数组
    bool row[9][9] = {};
    bool column[9][9] = {};
    bool matrix[3][3][9] = {};
    bool dfs(vector<vector<char>>& board, int x, int y){
        if(board[x][y] != '.'){
            if(dfs(board, x, y + 1)) return true;
            return false;
        }
        if(y == 9){
            x += 1;
            y = 0;
        }
        
        if(x >= 9) return true;
        
        // 原本就有数字
        
        // 没数字,需要填充
        for(char ch = '1'; ch <= '9'; ++ ch){
            if(row[x][ch - '1'] || column[y][ch - '1'] || matrix[x / 3][y / 3][ch - '1']) continue;
            board[x][y] = ch;
            row[x][ch - '1'] = column[y][ch - '1'] = matrix[x / 3][y / 3][ch - '1'] = true;

            if(dfs(board, x, y + 1)) return true;
            // 恢复现场
            row[x][ch - '1'] = column[y][ch - '1'] = matrix[x / 3][y / 3][ch - '1'] = false;
            board[x][y] = '.';
        }
        
        return false;
    }
    void solveSudoku(vector<vector<char>>& board) {
        // 先初始化状态数组
        for(int i = 0;i < board.size(); ++ i){
            for(int j = 0;j < board[0].size(); ++ j){
                if(board[i][j] != '.'){
                    row[i][board[i][j] - '1'] = true;
                    column[j][board[i][j] - '1'] = true;
                    matrix[i / 3][j / 3][board[i][j] - '1'] = true;
                }
            }
        }
        
        //cout << row[0][4] << endl;
        dfs(board, 0, 0);

        return;
    }
};

报了如下错误信息:

=================================================================
==22==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x502000000100 at pc 0x5598aee890b0 bp 0x7ffc233852f0 sp 0x7ffc233852e8
READ of size 1 at 0x502000000100 thread T0
    #8 0x7f65bbb2cd8f  (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f) (BuildId: c289da5071a3399de893d2af81d6a30c62646e1e)
    #9 0x7f65bbb2ce3f  (/lib/x86_64-linux-gnu/libc.so.6+0x29e3f) (BuildId: c289da5071a3399de893d2af81d6a30c62646e1e)
0x502000000100 is located 0 bytes after 16-byte region [0x5020000000f0,0x502000000100)
allocated by thread T0 here:
    #7 0x7f65bbb2cd8f  (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f) (BuildId: c289da5071a3399de893d2af81d6a30c62646e1e)
Shadow bytes around the buggy address:
  0x501ffffffe80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x501fffffff00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x501fffffff80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x502000000000: fa fa fd fa fa fa fd fa fa fa fd fa fa fa fd fa
  0x502000000080: fa fa fd fa fa fa fd fa fa fa fd fa fa fa 00 00
=>0x502000000100:[fa]fa fd fa fa fa fd fa fa fa fd fa fa fa fd fa
  0x502000000180: fa fa 00 00 fa fa fd fa fa fa fd fa fa fa fd fa
  0x502000000200: fa fa fd fa fa fa 00 00 fa fa fd fa fa fa fd fa
  0x502000000280: fa fa fd fa fa fa fd fa fa fa 00 00 fa fa fd fa
  0x502000000300: fa fa fd fa fa fa fd fa fa fa fd fa fa fa 00 00
  0x502000000380: fa fa fd fa fa fa fd fa fa fa fd fa fa fa fd 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
==22==ABORTING

错误定位

通过注释代码的方法,定位到问题出现在

if(board[x][y] != '.'){
            if(dfs(board, x, y + 1)) return true;
            return false;
        }

错误原因

在递归时,xy的值可能会超出数组的范围,从而出现上述错误信息。换言之,若数组的索引超过了数组的边界,可能会出现上述错误文章来源地址https://www.toymoban.com/news/detail-858051.html

到了这里,关于LeetCode报错信息:==22==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x502000000100 at pc 0x5的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [Python3]爬虫HTTP Error 500错误,报错信息:urllib.error.HTTPError: HTTP Error 500: INTERNAL SERVER ERROR

    之后报下面的错误: 发现报错代码: 修改代码: 运行成功: 爬到的数据:

    2024年02月16日
    浏览(56)
  • leetcode链表题报错 runtime error: member access within null pointer of type ‘ListNode‘

    今天在做leetcode203:移除链表元素时,反复遇到了报错: runtime error: member access within null pointer of type ‘ListNode’ (solution.cpp) ,报错提示的意思是试图访问’ListNode空指针类型的成员,就浅浅记录一下修复bug的过程吧。。。。 刚开始的代码是这样的,逻辑是先建立一个头结点放

    2024年02月11日
    浏览(50)
  • postman能访问,程序不行,报错信息:Message“:“internal error, Unacceptable header specified in request

      在开发过程中发现一个奇怪的现象,同样的ip地址postman能获取到正确的返回,程序中不行,返回的是 error\\\":{\\\"code\\\":\\\"Base.1.0.GeneralError\\\",\\\"@Message.ExtendedInfo\\\":{\\\"Message\\\":\\\"internal error, Unacceptable header specified in request\\\"         解决办法:最后发现是程序中没有设置请求头信息,而postma

    2024年02月12日
    浏览(105)
  • 为什么选择C/C++内存检测工具AddressSanitizer?如何使用AddressSanitizer?

    目录 1、C++程序中的内存问题 2、AddressSanitizer是什么? 3、AddressSanitizer内存检测原理简述

    2024年02月09日
    浏览(46)
  • LeetCode报错解决 Char 5: error: non-void function does not return a value in all control paths

    在做LeetCode第268题\\\"丢失的数字\\\"的时候报了这个错误 原答案 答案修改为如下 正确。 分析:原答案使用IF语句时出错。原答案只有在if语句下才有返回值,尽管不会有其他情况,但严谨的编译器还是会报错,让你把其他情况都写清楚。 感谢这篇文章

    2024年02月03日
    浏览(45)
  • 内存检测工具——ASan(AddressSanitizer)的介绍和使用

    ASan全称AddressSanitizer,是一种内存错误检测工具,目的是帮助开发者检测和调试内存相关的问题,如使用未分配的内存、使用已释放的内存、堆内存溢出等。ASan是由Google开发的,广泛用于C、C++等语言的代码中。 ASan的工作原理是在编译时将额外的代码插入到目标程序中,对内

    2024年03月20日
    浏览(41)
  • Leetcode—22.括号生成【中等】

    之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

    2024年01月23日
    浏览(81)
  • 【LeetCode】HOT 100(22)

    精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍: 题目:538. 把二叉搜索树转换为累加树 - 力扣(Leetcode) 题目的接口: 解题思路

    2024年02月13日
    浏览(43)
  • LeetCode--HOT100题(22)

    给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意 ,函数返回结果后,链表必须 保持其原始结构 。 自定义评测

    2024年02月14日
    浏览(33)
  • ubuntu升级22.04无法启动--ACPI BIOS Error

    今天闲的慌,看我的ubuntu20又一次提示更新22.04, 特意去查下22有啥好的更新—— 紧凑的 Desktop UI、改进的桌面图标、酷炫的多任务切换、多色主题、压缩加密 、巴拉巴拉。。。 这么好耶,确认更新走起,一通下载新系统后,自信重启,眼巴巴等着22.0优秀的外观出现! 最后

    2024年02月06日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包