[英]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.