統計アルゴリズムを使用しており、セグメント化エラーが発生していますが、私はそれを見ることができません。私はかなりメモリを正しくコールしていると確信しています。私はループのいくつかの繰り返しの後にのみ障害を取得するので、多分それがアンダーフローと何かを持っているのだろうかと思っています。コードは私のprintf
と一緒にデバッグするためのものです。申し訳ありませんが、シンタックスが少し混乱している場合は、雑誌の出版物に従っています。次アルゴリズム内の小数で予期しないセグメント化エラーが発生しました
// *** n and m defined previously
float *aux_arr = calloc(n, sizeof(float));
if (aux_arr == NULL) {
printf("calloc failed");
}
int j;
int j0 = 1;
int j1 = 1;
aux_arr[1] = 1;
for (size_t i = 0; i < n - 1; i++) {
printf("\nOUTER\n");
j1 += 1;
printf("i: %zu\n", i);
printf("j1: %i\n", j1);
for (j = j1; j >= j0; j--) {
printf("\nINNER\n");
printf("j: %i\n", j);
printf("j1: %i\n", j1);
printf("j0: %i\n", j0);
// print first 5 elements of my aux_arr
for (int i = 0; i < 5; i++) {
printf("%f\n", aux_arr[i]);
}
aux_arr[j] = (j/m) * (aux_arr[j]) + (1 + (1/m) - (j/m)) * (aux_arr[j - 1]);
if (aux_arr[j] < (1.0 * pow(10, -20))) {
aux_arr = 0;
if (j == j1) {
j1 -= -1;
}
if (j == j0) {
j0 += 1;
}
}
}
}
出力:
OUTER
i: 0
j1: 2
INNER
j: 2
j1: 2
j0: 1
0.000000
1.000000
0.000000
0.000000
0.000000
INNER
j: 1
j1: 2
j0: 1
0.000000
1.000000
1.000000
0.000000
0.000000
OUTER
i: 1
j1: 3
INNER
j: 3
j1: 3
j0: 2
Segmentation fault: 11
あなたは、私がアクセスしようとすると、問題が来ることを見ることができます私のaux_arr
3回目。私はなぜそれが最初の2回うまく動作するかわからない。
ありがとうございます!
デバッガでコードをステップ実行しましたか?それが第一のことです。 – OldProgrammer
サンプルコードをコピーして貼り付け、コンパイルして実行できる[完全なプログラム](https://stackoverflow.com/help/mcve)に展開できますか? –
外側のループでは反復変数として 'i'を使用し、最初の5つの要素を出力するにはループを使用するのは混乱します。 – Barmar