Este código produce un error de segmentación durante la declaración de la matriz. Estoy confundido sobre por qué sucede esto. Intencionalmente seleccioné 2000000000 como valor porque está por debajo de 2^31 y puede caber en una variable entera.programación en C, ¿por qué esta declaración de matriz grande produce una falla de segmentación?
int main()
{
int nums_size = 2000000000;
int nums[nums_size];
int i;
for(i = 0; i < nums_size; i++) {
nums[i] = i;
}
return 0;
}
Incluso si ese no fuera el caso, 2000000000 * 4 = 8,000,000,000 bytes en una plataforma de 32 bits. Eso es casi 2^33, que es más que memoria disponible. –
@Chris: Sí, en realidad no conté los ceros hasta después de haber publicado. ¡Son muchos enteros! –
También es generalmente posible asignar matrices muy grandes con duración de almacenamiento estático. – caf