void solver_delete(solver* s) { int i; for (i = 0; i < vecp_size(&s->clauses); i++) free(vecp_begin(&s->clauses)[i]); for (i = 0; i < vecp_size(&s->learnts); i++) free(vecp_begin(&s->learnts)[i]); /* delete vectors */ vecp_delete(&s->clauses); vecp_delete(&s->learnts); veci_delete(&s->order); veci_delete(&s->trail_lim); veci_delete(&s->tagged); veci_delete(&s->stack); veci_delete(&s->model); free(s->binary); /* delete arrays */ if (s->wlists != 0){ int i; for (i = 0; i < s->size*2; i++) vecp_delete(&s->wlists[i]); /* if one is different from null, all are */ free(s->wlists); free(s->activity ); free(s->assigns ); free(s->orderpos ); free(s->reasons ); free(s->levels ); free(s->trail ); free(s->tags ); } free(s); }
void solver_delete(solver* s) { int i; for (i = 0; i < vecp_size(&s->clauses); i++) // free all clauses free(vecp_begin(&s->clauses)[i]); // delete vectors vecp_delete(&s->clauses); // delete arrays if (s->decisions != 0){ // if one is different from null, all are free(s->decisions); free(s->level_choice); free(s->assigns ); free(s->levels ); free(s->counts ); } free(s); }