I was trying to do a problem on HackerEarth, and I am getting Segmentation Faults for this for loop:
for (int index = 0; index < 18; index++){
    cout << arr_list[arr_index][index];
}
Even though I assigned values to arr_list[arr_index][index] in the loop right before (so I'm guessing the values are somehow not being saved, but I don't know how the values aren't being saved).
When I remove this for loop, I don't get any segfaults, and the cout information prints what's expected (the numbers I've inputted, with each digit twice for each cout inside the loop).
#include <iostream>
#include <string>
using namespace std;
void step(int arr_list[1000000][18], int cs, int N){
    /**
    int freq[100000] = {0};
    for (int i = 0; i < N; i++){
        int cur_arr[18];
        for (int index = 0; index < 18; index++){
            cur_arr[index] = arr_list[i][index]; 
        }
        if (cs == 4){
            freq[cur_arr[0]*100 + cur_arr[1] * 10 + cur_arr[2]] += 1;
        } else{
            freq[cur_arr[18 - cs*5] * 10000 + cur_arr[18 - cs*5 + 1] * 1000 + cur_arr[18 - cs*5 + 2]*100 + cur_arr[18 - cs*5 + 3] * 10 + cur_arr[18 - cs*5 + 4]] += 1;
        }
    }
    
    for (int i = 1; i < 100000; i++){
        freq[i] += freq[i-1];
    }
    
    int new_arr_list[1000000][18];
    
    for (int i = N-1; i >= 0; i--){
        int pos;
        int cur_arr[18];
        for (int index = 0; index < 18; index++){
            cur_arr[index] = arr_list[i][index];
        } 
        if (cs == 4){
            pos = cur_arr[0]*100 + cur_arr[1] * 10 + cur_arr[2];
        } else{
            pos = cur_arr[18 - cs*5] * 10000 + cur_arr[18 - cs*5 + 1] * 1000 + cur_arr[18 - cs*5 + 2]*100 + cur_arr[18 - cs*5 + 3] * 10 + cur_arr[18 - cs*5 + 4];
        }
        
        for (int index = 0; index < 18; index++){
            new_arr_list[freq[pos] - 1][index] = arr_list[i][index];
        }
        
        freq[pos] --;
    }
    
    for (int i = 0; i < N; i++){
        for (int index = 0; index < 18; index++){
            arr_list[i][index] = new_arr_list[i][index];
        }
    }
    **/
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int T;
    int arr_index = 0;
    cin >> T;
    int arr_list[1000000][18];
    int max_len = 0;
    for (int testcase = 0; testcase < T; testcase ++){
        string a;
        cin >> a;
        int a_len = a.length();
        if (a_len > max_len){
            max_len = a_len;
        }
        int arr_entry[18];
        for (int i = 0; i < a_len ; i++){
            arr_entry[18 - a_len + i] = a[i] - 48;
        }
        for (int i = 0; i < 18 - a_len; i++){
            arr_entry[i] = 0;
        }
        
        for (int index = 0; index < 18; index++){
            arr_list[arr_index][index] = arr_entry[index];
            cout << arr_entry[index];
            cout << arr_list[arr_index][index];
        }
        
        for (int index = 0; index < 18; index++){
            cout << arr_list[arr_index][index];
        }
        arr_index ++;
    }
    /**
    for (int c = 1; c < 5; c++){
        
        if (max_len > (c-1)*5){
            step(arr_list, c, T);
            
            for (int i = 0; i < T; i++){
                int is_leading_zero = 1;
                
                for (int j = 0; j < 18; j++){
                    if (is_leading_zero == 0){
                        cout << arr_list[i][j];
                    }else{
                        if (arr_list[i][j] != 0){
                            is_leading_zero = 0;
                            cout << arr_list[i][j];
                        }
                    }
                }
                cout << " ";
            }
            cout << "\n";
        } 
    }
    **/
}
I'm assuming this is a common error, and that I'm missing something simple that gives me segfaults for values I already assigned data to.
Does anyone know why this is happening?
 
     
    