別の学生が、自分のCコードの何が問題になっているのかと私に尋ねました。私は誤った動作をうまく再現しましたが、なぜこのセグフォールトが発生するのかまったくわかりません。この小さなCプログラムを考えてみましょう。
#include <stdio.h>
int main(void) {
int N = 590;
double A[N][N];
double B[N][N];
double C[N][N];
printf("done");
}
N
値<=590に設定:
これは、出力の有無にかかわらず、エラーなしで実行されます。N
> 590の値に 設定:- 出力ラインを削除して問題なく動作します。
- コンパイルして出力で実行:セグメンテーション違反
これの理由は何ですか?誰か説明できますか?