Код выхода Clion -1073741571 (0xC00000FD) - PullRequest
0 голосов
/ 26 октября 2018

Я получаю странный код выхода в clion:

код выхода -1073741571 (0xC00000FD)

Это мой код:

int main()
{
    std::cin.sync_with_stdio(false);
    std::cin.tie(nullptr);

    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);

    int n = 0, i = 0, j = 0;
    int arr[30007][5];

    for (i = 1; i <= 30000; i++)
        arr[0][i] = 1;

    //...

    return 0;
}

Я проверил это и выяснил его из-за этой строки:

int arr[30007][5];

У меня не было проблем с объявлением массива размером менее 1.000.000 2 дня назад, и теперь яполучите эту ошибку.Я ничего не изменил в Клионе.

Что мне делать?

1 Ответ

0 голосов
/ 26 октября 2018

Номер ошибки 0xC00000FD означает «переполнение стека» (я полагаю, ваша платформа - Windows).Под Windows локальные переменные размещаются в стеке (как и на большинстве других платформ), а int arr[30007][5] довольно большой (30007 * 5 * 4 = 600140 байт), а стеки обычно довольно малы (обычно около 1 Мб, опять же в зависимости от платформы)

У вас есть много вариантов:

  1. использовать std::vector вместо необработанных массивов (предпочтительно)
  2. объявить массив как статический (static int arr[30007][5];), затембольше не будет находиться в стеке
  3. увеличит размер стека вашего исполняемого файла.Это сильно зависит от платформы / слишком сильно.
  4. динамически выделяет массив
...