1
그래서이 상황이 있습니다. 종단 핸들러와 힙에 이전에 alloc'd 된 구조체에 대한 포인터.조건부 힙이 없습니다.
내가 원하는 것은 핸들러를 선택적으로 해제하는 것입니다. 각 포인터에 대해 대응 구조체가 alloc'd이면 자유 여야합니다. 나는 모든 포인터 상태 (alloc'd 또는 free)를 제어하고 핸들러가 해제해야하는지 결정하기 위해 정수 (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);
}
는 똑똑한 솔루션이 있습니다입니까? 미리 감사드립니다.
수동으로 설정해야합니까, 아니면 '무료'로 설정하면 포인터에 NULL이 설정됩니까? '{/*...*/ 무료 (usr_rec); usr_rec = NULL; /*...*/}' –
그러나 termination_handler는 언제든지 시작할 수 있습니다. 나는 다른 방법으로 그것을 관리 할 수 없다! –
물론 'free'를 호출 한 후에 포인터를 NULL로 설정해야합니다. – Art