为什么我的 c++ 代码在使用堆栈时以退出代码 11 结尾?
Why is my c++ code finishing with exit code 11 when using the stack?
#include <iostream>
#include <stack>
int main() {
std::string s = "()"; // Input
std::stack<char> stack_;
for (int i=0; i < s.length(); i++) {
if (s[i] == stack_.top()) {
stack_.pop();
}
if (s[i] == '(') {
stack_.push(')');
}
if (s[i] == '{') {
stack_.push('}');
}
if (s[i] == '[') {
stack_.push(']');
}
else {}
}
while(!stack_.empty()) {
std::cout << stack_.top() << std::endl;
stack_.pop();
}
return 0;
}
我对C++相当陌生,并试图通过每天对 LeetCode.com 做一个问题来改进。我首先在 CLion 中测试我的代码,这给了我此代码的"进程已完成,退出代码 11"错误。我试图解决的问题是:https://leetcode.com/problems/valid-parentheses/
这只是简单的测试代码,我在其中更改字符串 s 的输入,我的策略是将括号类型放在堆栈上,如果匹配的右括号是下一个字符,则将它们剥离,然后如果堆栈末尾为空,字符串通过测试。
我相信退出代码 11 是内存泄漏或分段错误,但我无法通过查看我的代码来确定在哪里可以查明这种情况发生的位置。任何帮助将不胜感激。谢谢!
总是调用此行,即使刚刚创建stack_
:
if (s[i] == stack_.top()) {
在空堆栈上调用top()
会导致未定义的行为。
std::stack::top description https://en.cppreference.com/w/cpp/container/stack/top
您正在尝试获取对空堆栈的顶部元素的引用,因此您收到异常
相关文章:
- 创建LinkedList退出,返回代码为-11(SIGSEGV)
- pclose() 不会给我进程退出代码
- C++逗号分隔的输入数组代码过早退出
- Netbeans 10:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- 链接器命令失败,macOS 上的退出代码为 1(使用 -v 查看调用)
- 为什么我的 c++ 代码在使用堆栈时以退出代码 11 结尾?
- 使用常量字符*时退出代码 139
- 你好世界在 APUE 第 7 章退出,代码为 0
- 程序显示以退出代码 0; 结束
- VSCode C++终端进程已终止,退出代码为:1
- Qt5 [make -snap] 无法正确编译:进程"/usr/bin/snap"代码 1 退出
- 错误MSB3073以代码 8 退出
- 在GDB中:在启动程序中以代码1退出.在GDB之外运行良好
- 如何修复使用代码 2 退出"CL.exe"
- Visual Studio 中 Opencv 的介绍性示例程序以代码 -1 退出.不放心
- 我怎样才能删除它?(进程 4652) 以代码 0 退出
- QtCreator:进程 jom.exe 以代码 3 退出
- 错误 MSB6006:"cmd.exe"使用代码退出
- OpenGL程序在Visual Studio 2015中以代码1退出
- 进程qmake.exe以代码2退出-第一次使用Qt和Qt Creator