Em C ou C ++, os objetos locais geralmente são alocados na pilha. Você está alocando uma grande matriz na pilha, mais do que a pilha pode suportar, então você está recebendo um stackoverflow.
Não o aloque localmente na pilha, use algum outro lugar ao invés. Isso pode ser obtido tornando o objeto global ou alocando-o no heap global . Variáveis globais estão bem, se você não usar o de nenhuma outra unidade de compilação. Para garantir que isso não aconteça por acidente, adicione um especificador de armazenamento estático, caso contrário, apenas use o heap.
Isso será alocado no segmento BSS, que faz parte do heap:
static int c[1000000];
int main()
{
cout << "done\n";
return 0;
}
Isso será alocado no segmento DATA, que também faz parte do heap:
int c[1000000] = {};
int main()
{
cout << "done\n";
return 0;
}
Isso será alocado em algum local não especificado no heap:
int main()
{
int* c = new int[1000000];
cout << "done\n";
return 0;
}