gpt4 book ai didi

c++ - AddressSanitizer : SEGV on unknown address 0x000000000000 mean? 是什么

转载 作者:行者123 更新时间:2023-12-03 07:07:11 26 4
gpt4 key购买 nike

我正在解决一个 leetcode 问题并得到这个错误。我不知道这意味着什么,因为我对 C++ 比较陌生。当我删除 else if 中的 else 时,它​​似乎消失了。

AddressSanitizer:DEADLYSIGNAL
=================================================================
==32==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x000000383e8c bp 0x7ffc55bebe50 sp 0x7ffc55bebd20 T0)
==32==The signal is caused by a READ memory access.
==32==Hint: address points to the zero page.
#3 0x7f2222e3982f (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
AddressSanitizer can not provide additional info.
==32==ABORTING

我的代码:

class Solution {
public:
bool isValid(string s) {
stack<char> stk;
int flag=1;
for(int i=0; i< s.length();i++){
if(s[i]=='('||s[i]=='{'||s[i]=='['){
stk.push(s[i]);
flag=0;
}
else { //if (s[i]==')'||s[i]=='}'||s[i]==']'){
if(s[i]==')'&&stk.top()=='('){
stk.pop();
flag=1;
}
else if(s[i]==']'&&stk.top()=='['){
stk.pop();
flag=1;
}
else if(s[i]=='}'&&stk.top()=='{'){
stk.pop();
flag=1;
}
else
return false;
}
}
if(flag==0)
return false;
else
return true;
}
};

最佳答案

这意味着您在代码中的某处取消引用了一个空指针。 gdb 将是调试此问题的更好工具。运行 gdb program -ex r 直到它崩溃。然后使用 bt 打印堆栈跟踪以查看出了什么问题。

关于c++ - AddressSanitizer : SEGV on unknown address 0x000000000000 mean? 是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61078676/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com