我在以下代码中遇到了SEG故障。谁能帮我纠正它?阵列的大小应该足够,我不从绑定中访问它。
#include <iostream>
using namespace std;
int main () {
long L,N;
long sAni[1000], tAni[1000];
cin >> L;
cin >> N;
bool occupied[L+1] = {};
for (long i = 0; i < N; i++) {
cin >> sAni[i] >> tAni[i];
}
for (long i = 0; i < N; i++) {
for (long j = sAni[i]; j <= tAni[i]; j++) {
occupied[j] = 1;
}
}
long count,max = 0;
for (long i = 0; i <= L; i++) {
if (occupied[i] == 0) { // Seg fault here
count++;
} else {
if (count > max) {
max = count;
}
count = 0;
}
}
cout << max;
return 0;
}
首先,我们无法初始化一个可变大小的数组。
我不明白您试图通过此代码实现什么,但是我知道问题所在。
对于以下样本输入:
5
2
10 20
30 40
l-> 5
n-> 2
sani [0] -> 10,tani [0] -> 20
sani [1] -> 30,tani [1] -> 40
和以下代码行,
for (long j = sAni[i]; j <= tAni[i]; j++) {
occupied[j] = 1;
}
j将为10,但是"占领"数组只有l 1的大小,即6(5 1(,而您是尝试访问占用的[10] 会导致分割故障。blockquote>
声明阵列时请注意