「多次元配列」を動的に作成する際に問題が発生しています。comp.lang.c FAQ で 6.14 を読み、そこにリストされているコードに従っています。
cache_array = malloc(cm_blks * sizeof(int *));
if (cache_array = NULL) {
fprintf(stderr, "out of memory\n");
exit(1);
}
for (i = 0; i < cm_blks; i++) {
cache_array[i] = malloc(6 * sizeof(int));
if (cache_array[i] == NULL) {
fprintf(stderr, "out of memory\n");
exit(1);
}
}
変数 cm_blks は整数で、私のテスト ケースでは 8 です。cache_array は次のように初期化されます。
int **cache_array;
コードは正常にコンパイルされますが、出力を実行すると、malloc の 2 行目でセグメンテーション違反が発生します。