だから、私はこの状況にあります。終了ハンドラーと、以前にヒープに割り当てられた構造体へのポインター。
私がしたいのは、ハンドラーを使用してそれらを選択的に解放することです。対応する構造体が割り当てられている場合、ポインターごとに解放する必要があります。整数 (1 ポインター -> 1 int) を使用して、すべてのポインターの状態 (割り当て済みまたは解放済み) を制御し、ハンドラーが解放する必要があるかどうかを判断します。
これがコードです
/*HEAP STATUS GLOBAL VARIABLES (1 => free required)*/
int free_addrinfo, free_up_rcvd, free_rc_rcvd, free_rc_rspn;
/*HEAP POINTERS*/
struct addrinfo *result;
USR_PSW *up_rcvd;
TBOOK_RECORD *rc_rcvd, *rc_rspn;
void termination_handler(){
close(sock_ds);
close(acc_sock_ds);
if(free_addrinfo) freeaddrinfo(result);
if(free_up_rcvd) free(up_rcvd);
if(free_rc_rcvd) free(rc_rcvd);
if(free_rc_rspn) free(rc_rspn);
_exit(EXIT_SUCCESS);
}
よりスマートなソリューションはありますか? よろしくお願いします!