GSLライブラリを使用してCコードを記述しています。私はGSLライブラリを使って自分のコードに変数を割り振り、解放し、割り振る際に、ある種の矛盾(少なくともCの限られた知識から)に気付いています。最初の割り当てがループ内にあるときは、うまく動作します。別の関数で 変数の割り当て、解放、割り当て
int i;
for(i=1; i < 101; i++){
gsl_matrix * W = gsl_matrix_alloc(10,10);
gsl_matrix_free(W);
}
は、私は、ループの前に
int i;
gsl_matrix * W = gsl_matrix_alloc(10,10);
for(i=1; i < 101; i++){
gsl_matrix_free(W);
gsl_matrix * W = gsl_matrix_alloc(10,10);
}
を初期割り当てを持っており、それは動作しません。最後に、私がループのgsl_matrix *
を取り出すと、それは動作します。例えば。
int i;
gsl_matrix * W = gsl_matrix_alloc(10,10);
for(i=1; i < 101; i++){
gsl_matrix_free(W);
W = gsl_matrix_alloc(10,10);
}
説明はありますか?ループの内部または外部の最初の割り当ての配置が重要なのはなぜですか?