Почему вылезает ошибка сегментации C++ (signal: segmentation fault (core dumped))
#include <cmath>
using namespace std;
typedef long long ll;
int main(){
ll n;
cin >> n;
ll arr1[100000][100000];
for(int i = 0; i<n; i++){
for(int j = 0; j<n; j++){
arr1[i][j] = 0;
}
}
ll tmp;
for(int i = 0; i<n; i++){
cin >> tmp;
arr1[i][tmp-1] = 1;
cout << tmp-1 << " " << i << " " << n << endl;
}
cout << endl;
for(int i = 0; i<n; i++){
for(int j = 0; j<n; j++){
cout << arr1[i][j];
}
cout << endl;
}
ll counter = 0;
cout << endl;
for(int j = 0; j<n; j++){
counter = 0;
for(int i = n-1; i>=0; i--){
if(arr1[i][j]==1){
cout << counter+1;
}
counter++;
}
}
}
Подозреваю что дело в массиве arr1
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
long long arr1[100000][100000];
Итого 8*10000000000 байт ≈ 74.5 Гигабайт
Как вы собираетесь выделить такое большое количество памяти? даже в 64-разрядном коде столько памяти — никакой своп не поможет...
Visual C++ 2019 такой код просто компилировать отказывается.
Что-то типа этого можно — для реальных n, конечно:
ll n;
cin >> n;
ll ** arr1 = new ll*[n];
for(ll i = 0; i < n; ++i)
arr1[i] = new ll[n];