저는 C 프로젝트를 진행하고 있습니다. 프로그램이 정상적으로 실행되면 프로그램 끝에서 정리를 수행합니다. 그것은 curl과 mysql, free() char 배열 등을 정리합니다.디버깅 중에 exit() 함수 사용
새로운 루틴을 개발할 때 프로그램 끝에서 정리해야 할 리소스를 할당 할 것입니다. 하지만 새로운 루틴으로 어떤 일이 벌어지는 지 알기 위해 여러 가지를 인쇄하고 다음을 호출합니다. exit (0);
제 질문은 이러한 unceremonious exit 명령을 사용하여 코드를 컴파일 할 때 내 프로그램이 끝날 때 할당되지 않은 리소스를 할당 해제하기에 충분히 똑똑한 Linux 환경입니까? 아니면 시스템 메모리에서 누수가 발생 했습니까?
짧은 대답 : 예. exiting은 모든 소켓과 파이프를 종료하고 프로그램에 의해 할당 된 모든 메모리를 해제합니다. –
누출 될 수있는 특정 공유 리소스 (삭제되지 않은 파일 또는 릴리스되지 않은 IPC 리소스 등)가 있습니다. 그렇지 않은 경우 예입니다. 하위 프로세스이고 상위 프로세스가 사용자에게 권한을 부여하지 않으면 프로세스 테이블 항목이 누출됩니다. – jxh
고마워요. 나는 때때로 ps를 사용하여 프로세스를 확인하고 있는데, 보이지 않는다. 그래서 저는 시스템을 너무 많이 손상시키지 않는다고 가정합니다. 나는 아마이 방법으로 약 100 번이나이 프로그램을 종료했을 것이며, 아직 어떤 부작용도 보지 못했다. 그래서, 분명히, 지금까지 그렇게 좋았습니다. 아니면 jxh가 말한 것을 놓쳤습니까? – mikekehrli