En C o C ++, los objetos locales generalmente se asignan en la pila. Está asignando una matriz grande en la pila, más de lo que la pila puede manejar, por lo que obtiene un stackoverflow.
No lo asigne localmente en la pila, use otro lugar en su lugar. Esto se puede lograr haciendo que el objeto sea global o asignándolo en el montón global . Las variables globales están bien, si no usa las de ninguna otra unidad de compilación. Para asegurarse de que esto no suceda por accidente, agregue un especificador de almacenamiento estático; de lo contrario, simplemente use el montón.
Esto asignará en el segmento BSS, que es parte del montón:
static int c[1000000];
int main()
{
cout << "done\n";
return 0;
}
Esto asignará en el segmento de DATOS, que también es parte del montón:
int c[1000000] = {};
int main()
{
cout << "done\n";
return 0;
}
Esto se asignará en alguna ubicación no especificada en el montón:
int main()
{
int* c = new int[1000000];
cout << "done\n";
return 0;
}