无法指出发生分段错误的位置
Unable to point of where segmentation fault is occuring
每当我遇到查询"Q"时,我都应该打印堆栈中最大的元素(在这里使用矢量实现堆栈(,当我针对一些示例测试用例运行它时,它工作正常,但每当我提交代码时,它都会给我分段错误。
当查询为 A 10 时,将 10 加到堆栈, 当查询是堆栈中的 R pop 元素时, 当查询为 Q 时,打印堆栈中最大的元素
#include <stdio.h>
#include <bits/stdc++.h>
#include <iostream>
#include <vector>
using namespace std;
int main() {
int t=0;
cin>>t;
for(int x=0;x<t;x++){
printf("Case %d:n",x+1);
int q=0;
cin>>q;
vector<int> myvec;
vector<int> trackvec;
int top=-1;
for(int i=0;i<q;i++){
string s;
cin>>s;
if(s=="A"){
int num=0;
cin>>num;
myvec.push_back(num);
if(i==0){trackvec.push_back(num);top++;}
else{
if(num>trackvec[top]){
trackvec.push_back(num);
top++;
}
else{
trackvec.push_back(trackvec[top]);
top++;
}
}
}
else if(s=="R"){
myvec.pop_back();
trackvec.pop_back();
top--;
}
else if(s=="Q" && top==-1){
cout<<"Empty"<<endl;
}
else if(s=="Q"){
cout<<trackvec[top]<<endl;
}
}
}
}
The trackvec here is to keep track of the largest element
Sample input:
2
7
A 10
A 5
Q
A 100
Q
R
Q
6
A 5
Q
R
Q
R
R
我已经编辑了这篇文章,您可以检查示例输入,但代码确实适用于这些示例输入
您的第一个任务应该是生成导致崩溃的输入。您对输入中有多少A
和R
做出了哪些假设?
以下是在我的系统上产生分段错误的输入:
1
2
R
Q
希望修复现在对您来说是显而易见的。
相关文章:
- OpenGL 4.3 错误地将第 4 个纹理坐标映射到与第 3 个纹理坐标相同的位置
- 0xC0000005:访问冲突写入位置0xCDCDCDCD动态分配错误
- 奇怪的Arduino C++编译错误取决于文件位置
- 我收到分段错误,但不了解分段错误发生的位置
- 访问特定阵列位置/索引时出现分段错误
- boost::p rogram_options 在指定意外的位置参数时不报告任何错误
- 快速排序;分段错误,但找不到位置?
- 在尝试使用CUDA分配内存时,我遇到了访问冲突写入位置错误
- 错误 在测试.exe 0x76C9FD62时出现未经处理的异常:Microsoft C++异常:内存位置0x006FF8
- 错误:内存位置的 std::length_error
- 处于默认参数位置的 Lambda 无法访问好友成员。这是编译器错误吗?
- 无法指出发生分段错误的位置
- 在 C 代码中调用 Python 函数时第三次出现访问冲突写入位置错误
- 目标提升::<library>已经有导入的位置 + 链接错误
- 如何使用 Poco Json 解析器确定输入文档中错误的位置?
- 在动态加载的位置无关的可执行文件中分离错误
- Visual studio显示SEH异常的错误位置
- 编译器运行时错误报告和错误位置
- 核心转储,但是找不到错误位置,有GDB的错误信息
- 如何使用精灵解析器获得错误位置