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);
}
有沒有人有解釋?爲什麼在循環內部或外部放置第一個分配很重要?