/* RAH 4.15.01 Lots of memory is allocated, but never freed, this function will clean up. * First pass will get the low hanging fruit.*/ void kb_free (kb_t *kb) { vithist_t *vithist = kb->vithist; if (kb->sen_active) ckd_free ((void *)kb->sen_active); if (kb->ssid_active) ckd_free ((void *)kb->ssid_active); if (kb->comssid_active) ckd_free ((void *)kb->comssid_active); if (kb->fillertree) ckd_free ((void *)kb->fillertree); if (kb->hmm_hist) ckd_free ((void *)kb->hmm_hist); /* vithist */ if (vithist) { ckd_free ((void *) vithist->entry); ckd_free ((void *) vithist->frame_start); ckd_free ((void *) vithist->bestscore); ckd_free ((void *) vithist->bestvh); ckd_free ((void *) vithist->lms2vh_root); ckd_free ((void *) kb->vithist); } kbcore_free (kb->kbcore); if (kb->feat) { ckd_free ((void *)kb->feat[0][0]); ckd_free_2d ((void **)kb->feat); } }
/* RAH 4.15.01 Lots of memory is allocated, but never freed, this function will clean up. * First pass will get the low hanging fruit.*/ void kb_free(kb_t * kb) { if (kb->srch) { srch_uninit(kb->srch); /** Add search free code */ } if (kb->stat) { stat_free((void *) kb->stat); } if (kb->ascr) ascr_free((void *) kb->ascr); if (kb->fastgmm) fast_gmm_free((void *) kb->fastgmm); if (kb->beam) beam_free((void *) kb->beam); if (kb->pl) pl_free((void *) kb->pl); if (kb->kbcore != NULL) kbcore_free(kb->kbcore); /* This is awkward, currently, there are two routines to control MLLRs and I don't have time to unify them yet. TBD */ if (kb->adapt_am->regA && kb->adapt_am->regB && kb->adapt_am->regH) mllr_free_regmat(kb->adapt_am->regA, kb->adapt_am->regB, kb->adapt_am->regH); if (kb->adapt_am) adapt_am_free(kb->adapt_am); if (kb->feat) { ckd_free((void *) kb->feat[0][0]); ckd_free_2d((void **) kb->feat); } if (kb->uttid) { ckd_free(kb->uttid); } if (kb->uttfile) { ckd_free(kb->uttfile); } #if 0 /* valgrind reports this one. */ if (kb->matchsegfp) fclose(kb->matchsegfp); if (kb->matchfp) fclose(kb->matchfp); #endif }
static void models_free(void) { if (adapt_am) adapt_am_free(adapt_am); if (fastgmm) fast_gmm_free(fastgmm); if (ascr) ascr_free(ascr); if (dict) dict_free(dict); kbcore_free(kbc); }
/* RAH 4.15.01 Lots of memory is allocated, but never freed, this function will clean up. * First pass will get the low hanging fruit.*/ void kb_free (kb_t *kb) { vithist_t *vithist = kb->vithist; if (kb->sen_active) ckd_free ((void *)kb->sen_active); if (kb->ssid_active) ckd_free ((void *)kb->ssid_active); if (kb->comssid_active) ckd_free ((void *)kb->comssid_active); if (kb->fillertree) ckd_free ((void *)kb->fillertree); if (kb->hmm_hist) ckd_free ((void *)kb->hmm_hist); /* vithist */ if (vithist) { ckd_free ((void *) vithist->entry); ckd_free ((void *) vithist->frame_start); ckd_free ((void *) vithist->bestscore); ckd_free ((void *) vithist->bestvh); ckd_free ((void *) vithist->lms2vh_root); ckd_free ((void *) kb->vithist); } kbcore_free (kb->kbcore); if (kb->feat) { ckd_free ((void *)kb->feat[0][0]); ckd_free_2d ((void **)kb->feat); } if (kb->cache_ci_senscr) { ckd_free_2d ((void **)kb->cache_ci_senscr); } if( kb->cache_best_list) { ckd_free((void*) kb->cache_best_list); } if(kb->phn_heur_list) { ckd_free((void*) kb->phn_heur_list); } if (kb->matchsegfp) fclose(kb->matchsegfp); if (kb->matchfp) fclose(kb->matchfp); kb_freehyps(kb); }