使用长变量时分割故障(11)错误



我在以下代码中遇到了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>

声明阵列时请注意

相关内容

  • 没有找到相关文章

最新更新