Falla de segmentación, matrices grandes
segmentation-fault (1)
Estás desbordando la pila. 2 * 1024 * 1024 * sizeof(int)
es mucho para la mayoría de los sistemas.
La solución más simple sería hacer las matrices static
.
static int a[N][N];
static int b[N][N];
Otros metodos:
- Haga los arreglos globales (esto es esencialmente el mismo que el anterior)
Usa
malloc
en un bucle y por supuesto recuerdafree
int **a = malloc(N * sizeof *a); for (i = 0; i < N; i++) a[i] = malloc(N * sizeof *a[i]);
#include <stdio.h>
#define N 1024
int main(){
int i, j;
int a[N][N];
int b[N][N];
for (i=0;i<N;i++){
a[i][i]=i;
b[i][i]=i;
}
for (i=0;i<N;i++)
for(j=0;j<N;j++)
{
printf("%d", a[i][j]);
printf("%d", b[i][j]);
}
return 0;
}
Este programa es un motivo de fallo de segmentación, pero si defino N como 1023, el programa funcionará correctamente. ¿Por qué sucede?