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);
}
누구에게 설명이 있습니까? 루프 내부 또는 외부의 첫 번째 할당 배치가 중요한 이유는 무엇입니까?