#include <stdio.h>
#include <stdlib.h>
void main()
{
long n = 1000;
long a[n][n];
long b[n][n];
long c[n][n];
for(int i = 0; i < n; i++)
for (int j=0; j<n; j++)
{
a[i][j] = i+j;
// b[i][j] = 0; //Если раскомментировать, то возникает ошибка
}
}
Если выделять динамически, то в куче вряд ли получится, ее размер наверняка тоже 8Мб.
Все правильно! Кто ж столько выделяет в стеке?Не знаю, как в Вашей среде, в моей студии под стек, по-умолчанию, выделяется 0x100000 = 1048576, т.е всего 1Мб а Вы хотите разместить там 12 (!) Мб. Вот и имеете переполнение стека. У Вас, возможно, размер стека чуть больше, но при записи в b, очевидно, пытаетесь получить доступ за пределы сегмента данных(стека) Полагаю, Вы пробуете создать release-версию. Если попробуете debug, то получите вылет на этапе инициализации локальных переменных! Выход: под массивы выделять память динамически (кстати, куча тоже имеет предел!) или увеличить размер стека для программы
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.