una tipos servicio segmentacion practico mercado empresa ejemplos ejemplo definicion criterios clientes c segmentation-fault

tipos - falla de segmentación antes de la ejecución de la principal



tipos de segmentacion de clientes (2)

Las variables locales, incluidas las matrices, se almacenan en la pila. El tamaño de pila predeterminado en Linux es de 8 MB. Solo una de tus matrices es solo 8 millones de bytes, 1000 * 1000 * 8 ( sizeof(double) es 8). Tienes tres de estas matrices.

Haga estas matrices globales o asigne dinámicamente.

Estoy practicando c y enfrentándome a un fallo de segmentación antes de que se ejecute la función principal ("hi" no está imprimiendo e incluso gdb no menciona la línea de error, excepto que la llamada proviene de la función principal). ¿Puede alguien ayudarme por favor de donde es el error? Traté de averiguar y navegar por el error en línea, pero no pude encontrar el tipo de código que tengo.

#include<stdio.h> int main(){ printf("hi"); double L,dx,dy,dt; scanf("%lf %lf %lf %lf",&L,&dx,&dy,&dt); int i,j; int x=L/dx; int y=L/dy; double ar[1000][1000]; double o1=x/2; double o2=y/2; int D=2; double den[1000][1000]; double den1[1000][1000]; //printf("hi"); for(i=0;i<x;i++) { for(j=0;j<y;j++) { if(i==o1 && j==o2) { ar[i][j]=1; den[i][j]=1; } else { ar[i][j]=0; den[i][j]=0; } } } //printf("hi"); for(i=1;i<x-2;i++) { for(j=1;j<y-2;j++) { den1[i][j]=den[i][j]+((den[i+1][j]-den[i][j]+den[i-1][j]-den[i][j])/dx*dx+(den[i][j+1]-den[i][j]+den[i][j-1]-den[i][j])/dy*dy )*dt+((den[i+1][j]-den[i][j]+den[i-1][j]-den[i][j])/dx*dx+(den[i][j+1]-den[i][j]+den[i][j-1]-den[i][j])/dy*dy)*dt; } } for(i=0;i<x;i++) { for(j=0;j<y;j++) { printf("%lf",ar[i][j]); } printf("/n"); } printf("/n"); for(i=0;i<x;i++) { for(j=0;j<y;j++) { printf("%lf",den1[i][j]); } printf("/n"); } printf("/n"); return 0; }


Su función probablemente usa demasiada memoria de pila, causada por estas líneas:

double ar[1000][1000]; double den[1000][1000]; double den1[1000][1000];

Solución: asigne la memoria del montón:

double* den = malloc( 1000 * 1000 * sizeof( double )); etc.