首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AddressSanitizer:使用堆栈运行代码时DEADLYSIGNAL错误

AddressSanitizer:使用堆栈运行代码时DEADLYSIGNAL错误
EN

Stack Overflow用户
提问于 2020-09-29 11:39:58
回答 3查看 13.4K关注 0票数 1

我正在尝试一个名为“leetcode.com上的有效括号”的问题,这时出现了一个错误,它说:

代码语言:javascript
运行
复制
AddressSanitizer:DEADLYSIGNAL
=================================================================
==30==ERROR: AddressSanitizer: SEGV on unknown address (pc 0x0000003783d6 bp 0x7ffe68231e10 sp 0x7ffe68231ca0 T0)
==30==The signal is caused by a READ memory access.
==30==Hint: this fault was caused by a dereference of a high value address (see register values below).  Dissassemble the provided pc to learn which register was used.
    #3 0x7f427121b0b2  (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
AddressSanitizer can not provide additional info.
==30==ABORTING

这是生成错误的代码。

代码语言:javascript
运行
复制
#include <stack>

using namespace std;

class Solution {
public:
    bool isValid(string str) {
        stack<char> s;
        bool val=true;
        for(int i=0;i<str.length();i++){
            if(str[i]=='(') s.push(')');
            else if(str[i]=='{') s.push('}');
            else if(str[i]=='[') s.push(']');
            else if(str[i]==')'||str[i]=='}'||str[i]==']'){
                if(str[i]==s.top()) s.pop();
                else if(str[i]!=s.top()) {
                    val=false;
                    break;
                }
            }
        }
        if(s.empty()) val=true;
        else if(!s.empty()) val=false;
        
        return val;
    }
};

我不明白这个错误,如果有人给出解决方案,我会很有帮助的。

EN

Stack Overflow用户

发布于 2022-04-28 14:22:06

这是由于TLE而发生的运行时错误。

在这里,由于这几行代码:

代码语言:javascript
运行
复制
else if(str[i]==')'||str[i]=='}'||str[i]==']'){
                if(str[i]==s.top()) s.pop();
                else if(str[i]!=s.top()) {
                    val=false;
                    break;
                }
            }

您所做的是在检查指定类型的括号在堆栈中是否可用之前,随机地弹出top元素。

例如,如果我遇到‘),那么我应该检查顶部元素是否是'(’‘,它是边情况

票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64118862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档