1
我正在使用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);
}
有没有人有解释?为什么在循环内部或外部放置第一个分配很重要?