c segmentation-fault

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 recuerda free

    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?