これが初心者の質問である場合は、申し訳ありません。私のプログラミングのほとんどは非常に高水準の言語で行われており、C の専門知識は限られています (これは、Matlab、Octave、 Sage、Maximaなどですが、これにはCの速度が必要です)。
とにかく...実行時にmallocでサイズが設定される配列があります。
int *A = malloc(m * sizeof(int));
ここで、m はユーザーが指定した値から計算されます。配列を更新する関数「update」があります(または、必要に応じて、配列を入力として受け取り、別の配列を出力として返します)。この更新関数は、10^8 回以上呼び出すことができます。
そのため、関数自体は malloc を使用して適切なサイズの出力配列を導入できません。そうしないと、メモリが使い果たされます。したがって、たとえば、私はこれを行うことはできません:
int * update(int *L) /* produces next iteration of L */
{
int *out = malloc(m * sizeof(int));
/* do some stuff with L and produce new array out */
return (out);
}
更新関数の外で静的変数を作成しようとしました:
static int *out;
メインでそのサイズを定義します。
out = malloc(m * sizeof(int));
しかし、これもうまくいかないようです。
とにかく、私はいくつかのアドバイスに非常に感謝しています - 私はグーグルの卓越性を使い果たしたと思います.