В C или C ++ локальные объекты обычно размещаются в стеке. Вы выделяете большой массив в стеке, больше, чем стек может обработать, поэтому вы получаете stackoverflow.
Не размещайте его локально в стеке, вместо этого используйте другое место. Этого можно достичь, сделав объект global или разместив его в глобальной heap . Глобальные переменные хороши, если вы не используете из любого другого модуля компиляции. Чтобы это не произошло случайно, добавьте статический спецификатор хранилища, в противном случае просто используйте кучу.
Это будет выделено в сегменте BSS, который является частью кучи:
static int c[1000000];
int main()
{
cout << "done\n";
return 0;
}
Это будет выделено в сегменте DATA, который также является частью кучи:
int c[1000000] = {};
int main()
{
cout << "done\n";
return 0;
}
Это будет выделять в неуказанном месте в куче:
int main()
{
int* c = new int[1000000];
cout << "done\n";
return 0;
}