簡體   English   中英

為數組賦值時出現分段錯誤

[英]Segmentation Fault Error when assigning values to array

我目前正在USACO做一個基本的模擬問題。 我很確定我已經正確地完成了這個問題的算法,但是,當我嘗試為數組賦值時,我收到錯誤: run: line 1: 3 Segmentation fault (core dumped) LD_LIBRARY_PATH=/usr/local/gcc-9.2.0/lib64./a.out 這是我的代碼:

#include <iostream>
#include<string>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include<vector>
#include <cmath>
#include <array>
using namespace std;
void setIO(string s) { // the argument is the filename without the extension
    freopen((s+".in").c_str(),"r",stdin);
    freopen((s+".out").c_str(),"w",stdout);
}
int main() {
    // setIO("speeding");
    string new_signal = "";
    int m, n; cin >> m >> n;
    int arr1[n+m] = {0};
    int arr2[n+m] = {0};
    for(int i = 0; i < n+m; i++) {
        int a, b; cin >> a >> b;
        arr1[i] = a;
        arr2[i] = b;
        // cout << n+m;
    }
    
    int road_limits[100] = {0};
    int counter = 0;
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < arr1[i]; j++) {
            road_limits[counter] = arr2[i];
            counter++;
        }
    }
    counter = 0;
    int max_over_limit = -200;
    for(int i = n; n < n+m; n++) {
        for(int j = 0; j < arr1[i]; j++) {
            if((arr2[i] - road_limits[counter]) > max_over_limit){
                max_over_limit = (arr2[i] - road_limits[counter]);
            }
            counter++;
        }
    }
    
    cout << max_over_limit;
    return 0;
}

在使用 print 語句調試之后,我的代碼似乎在第一個 for 循環的某處出現了分段錯誤錯誤,我在其中分配了 arr1 和 arr2 的值(沒有cout語句運行超過該點)。 我不是為什么會這樣。 我對使用 C++ 比較陌生,所以我是否誤解了導致此錯誤的原因?

road_limits 的大小為 100,計數器可以超過 100 可以在幾個地方跨越數組邊界:

road_limits[counter] = arr2[i];
if((arr2[i] - road_limits[counter]) > max_over_limit){
    max_over_limit = (arr2[i] - road_limits[counter]);

取決於你想做什么:例如需要一張支票:

 for(int i = n; i < 100 && i < n+m; i++) {
     for(int j = 0; j < arr1[i]; j++) {
         if((arr2[i] - road_limits[counter]) > max_over_limit){
             max_over_limit = (arr2[i] - road_limits[counter]);
         }
         counter++;
     }
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM