一个简单的分段故障程序
Segmentation Fault in a simple program
我必须提交一些c++代码给一个提供反馈的判断系统。
然而,我得到了"硬测试用例"的段错误。
如果有人能快速看一下我的代码来帮助我,那就太好了。
(第一个输入总是一个正整数)
#include <iostream>
using namespace std;
int main()
{
long long t;
cin >> t;
bool table[t][t];
long long n = t;
int sum = 0;
long long s;
while(t--)
{
cin >> table[t][t];
if (!table[t][t])
{
sum++;
}
}
for(t=0;t<n;t++)
{
for(s=t+1;s<n;s++)
{
table[t][s] =
(table[t][s-1] && !table[s][s]) ||
(!table[t][s-1] && table[s][s]);
if(!table[t][s])
{
sum++;
}
}
}
cout << sum << endl;
return 0;
}
我没有看到任何索引超出范围的可能性,所以最可能的"硬情况"是t
大到足以溢出堆栈,因为您使用非标准的c++动态数组。使用std::vector
vector<vector<bool>> table{ t, vector<bool>{ t } };
vector<vector<bool>> table( t, vector<bool>( t ) ); // if you do not have C++11 yet
如果我输入t= 2
,您正在使用std::cin
读取的值将是table[2][2]
,这是无效的索引,因此引发分割故障。t=2
的最大索引为table[1][1]
相关文章:
- 分段故障(堆芯转储)矢量
- 数组的指针从不分段故障
- Windows 10-使用gtkmm-3.0库和g++[包括再现]的分段故障
- 分段故障 运行C++代码时出现 SIGSEGV
- 分段故障背包问题
- 分段故障 11,从类函数显示动态 C 字符串
- 面临分段故障 使用 ffmpeg 读取视频时,因为"pFormatCtx-> streams [i]-> codecpar"的地址0x00
- 在C++中,当指向删除和指向不同对象时,分段故障指针
- 分段故障说明
- 分段故障(核心转储)-不知道为什么
- 分段故障线程
- hiredis SET遇到分段故障
- 分段故障,合并排序算法
- 多线程程序中的分段故障和gdb回溯上的不完整信息
- 到达主C++之前分段故障
- 分段故障核心使用 IF流转储
- 使用向量的移动键盘排列(分段故障)
- 在二进制树插入和遍历期间,我得到了分段故障
- 分段故障在类之间返回整数
- C++分段故障BST