Доктор Память Утечка - C - Malloc 3D массив
Я использую Dr. Memory для отладки устаревшего кода, который падает в определенных условиях.
Доктор Память говорит, что во время выделения памяти произошла утечка:
float ***in_vol=NULL;
in_vol=(float ***) malloc(inimsize[12]*sizeof(float **)); // here **
// inimsize is array of ints
for (i0=0;i0<inimsize[12];i0++) {
in_vol[i0] =(float **) malloc(inimsize[0]*sizeof(float *));
for (i1=0;i1<inimsize[0];i1++) {
in_vol[i0][i1]=(float *) malloc(inimsize[1]*sizeof(float ));
}
}
Позже память освобождается:
for (i0=0;i0<in_header[0][12];i0++) {
for (i1=0;i1<in_header[0][0];i1++) {
free( (float*) *(*(in_vol+i0)+i1) );
}
free( (float*) *(in_vol+i0));
}
free( (float*)in_vol);
in_vol=NULL;
Я не вижу проблемы, однако мне не хватает памяти во время некоторых тестов.
Являются ли распределение и освобождение правильными?