-2
이 함수를 여러 번 호출하여 파일을 여러 번 인쇄 할 때 메모리 누수가 계속 발생합니다. 실제로 인쇄하지 않으면 문제가 없습니다.함수를 여러 번 호출하여 파일을 여러 번 인쇄 할 때 메모리 누수가 발생합니다.
void print_fields_weights_energies(MKL_Complex16 *stored_fields,
MKL_Complex16 *stored_energies,
MKL_Complex16 *weights,
int steps,
int_st ist,
cns_st cns) {
/*Print The Fields Out To File*/
int walkers;
int fields;
int field_number;
double tau = steps*cns.dtau;
char message[150];
FILE *pf;
/*Name and Make File*/
sprintf(message, "fields-tau%f.dat", tau);
pf = fopen(message, "w+");
for (walkers=0; walkers<cns.max_number_walkers; walkers++) {
for (fields=0; fields<ist.n_spin_orbitals_sq; fields++) {
field_number = walkers*ist.n_spin_orbitals_sq*3+fields*3;
fprintf(pf, "%f\t %d\t %d\t", tau, walkers, fields);
fprintf(pf, "%f\t %f\t %f\t %f+%fi\t\t", stored_energies[walkers*3].real, stored_energies[walkers*3+1].real, stored_energies[walkers*3+2].real, weights[walkers].real, weights[walkers].imag);
fprintf(pf, "%f\t %f+%fi\t %f+%fi\n", stored_fields[field_number].real, stored_fields[field_number+1].real, stored_fields[field_number+1].imag, stored_fields[field_number+2].real, stored_fields[field_number+2].imag);
}
}
fflush(pf);
return;
}
'fclose'를 절대로 호출하지 않습니까? – AndyG
태그가 잘못되었습니다. 그것은 C.로 쓰여졌습니다 – JY078
예. 나는 fclose를 호출했다. – JY078