Ошибка -1073741571 в коде C++
После запуска кода появляется ошибка (процесс номер) завершил работу с кодом -1073741571
Код не дописан и может выглядеть криво, заранее извиняюсь
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
#include <iostream>
#include <windows.h>
#include <thread>
#include <chrono>
#include <fstream>
#include <cmath>
#include <random>
#include <iomanip>
using namespace std;
//2.01e19 лет 1 год = 3.15569259747e7 с
//8.6e-23 c
int decay() {
return 0;
}
int main() {
setlocale(LC_ALL, "Ru");
srand(time(NULL));
int a{0};
double qtt[118][178];char types[118][178][11];double prbt[118][178][10];double period[118][178];
cout << "Программа анализа ядерных реакций фёдора 0.1!" << endl;
cout << "Выберите режим работы (1 -- запись) "; cin >> a;
for (int i = 0; i < 118;i++) {
for (int j = 0; j < 178;j++) {
qtt[i][j] = 0;
types[i][j][0] = 0;
period[i][j] = 8.6e-23;
}
}
ofstream file_in("Data.txt", ios_base::out);
if (a == 0) {
for (int i = 0; i < 2;i++) {
for (int j = 0; j < 8;j++) {
int qttv;
cout << "количество вариантов ";cin >> qttv;
types[i][j][0] = qttv;
for (int k = 0; k < qttv; k++) {
cout << i + 1 << " " << j + i + 1 << " " << "stable s / alpha a / beta- b / beta+ c / neutron n / proton p / b- n d / b- a e / b- b- f / b+ b+ g" << endl;
cin >> types[i][j][k + 1];
cout << "вероятность ";cin >> prbt[i][j][k];
}
cout << "период ";cin >> period[i][j];
}
}
}
for (int i = 0; i < 118;i++) {
for (int j = 0; j < 177;j++) {
file_in << qtt[i][j] << endl;
file_in << period[i][j];
for (int k = 0; k < types[i][j][0]; k++) {
file_in << types[i][j][k+1] << endl;
file_in << prbt[i][j][k] << endl;
}
}
}
file_in.close();
//ifstream file_out("Data.dat");
//file_out.close();
}
Отладчик говорит:
Необработанное исключение по адресу 0x00007FF63CC2C567 в распад.exe: 0xC00000FD: Stack overflow (параметры: 0x0000000000000001, 0x000000355E213000).
По дате
По Рейтингу
qttt: 118 * 178 * 8 = 168032 байта
types: 118 * 178 * 11 * 1 = 231044 байта
prbt: 118 * 178 * 10 * 8 = 1680320 байт
period: 118 * 178 * 8 = 168032 байта
И всё это ты пытаешься разместить в стеке, который совсем не резиновый.
Вынеси все свои массивы в статическую память:
1234567891011
// размещаем это ПЕРЕД main
double qtt[118][178];
char types[118][178][11];
double prbt[118][178][10];
double period[118][178];
int main() {
// а вот из main создание массивов убираем
...
}
Ошибка Stack overflow (переполнение стека) возникает из-за того, что вы выделяете слишком большие массивы в стеке.
скорее всего ошибка с считываем файла