배열을 인쇄하는 다음 코드를 작성했습니다. 그러나 입력이 매우 큰 경우 (예 : J = 40000) 세그먼트 분할 오류가 발생합니다. 왜 그런지 말해 줄 수 있니? 배열의 크기가 너무 크기 때문에 또는 내가 잘못했기 때문입니까?입력이 매우 큰 경우 세그먼트 오류가 발생합니다.
int main(){
int i,j,J;
printf("Give the number J: \n");
scanf("%d", &J);
double k[J-1];
double d[J-1];
double p[J-1];
double A[J-1][3];
double h=1.0/(double)J;
for(j=0; j<J-1; j++){
k[j]=-1.0/(h*h);
d[j]=2.0/(h*h);
p[j]=-1.0/(h*h);
}
for(j=0; j<J-1; j++){
A[j][0]=k[j];
A[j][1]=d[j];
A[j][2]=p[j];
}
A[0][0]=0.0;
A[J-2][2]=0.0;
for(j=0; j<J-1; j++){
for(i=0; i<3; i++){
printf("%lf ",A[j][i]);
}
printf("\n\n");
}
return 0;
}
Ok! 그리고 어떻게 malloc()을 2 차원 배열에 사용할 수 있습니까? –
malloc()은 메모리를 바이트 수로 예약합니다. 그것이 1, 2 또는 3 차원이라면 중요하지 않습니다. 예를 들어, 선언하려는 경우 : double A [J-1] [3]; (J-1) * 3 바이트가됩니다. 그래서 사용해야합니다 : double * A; A = malloc ((J-1) * 3); 그리고 원하는대로 사용할 수 있습니다 (이 경우 2 차원 배열로) – Abend
좋습니다! 당신의 도움을 주셔서 대단히 감사합니다! –