프로그램이 종료 될 때 Ubuntu가 C 프로그램에 의해 할당 된 메모리를 자동으로 해제합니까?


11

malloc()함수를 사용하여 메모리를 할당하는 코드가 포함 된 C 프로그램을 작성했습니다 . 이 free()기능을 사용하여 메모리를 확보하지 않으면 Ubuntu에서 자동으로 해제합니까?


커널의 책임 인 우분투와는 아무런 관련이 없습니다.
사용자

@user : 특정 버전의 Ubuntu는 Linux 커널 버전 중 하나 위에서 실행해야합니다. 따라서 우분투와 관련이 있으므로 커널이 실행중인 커널이 자동으로 메모리를 해제하는지 여부를 알 수 있습니다.
ashubuntu

답변:


16

예.

커널은 프로그램 종료시 프로그램이 할당 한 모든 리소스를 해제합니다.

do_exit()정의 된 함수 kernel/exit.c가 실행을 종료 한 후에 수행됩니다. do_exit()기능 실행 자체가 이벤트의 숫자에 의해 유발 될 수있는, 가장 일반적으로 명시 적으로 exit()정규 계산시 또는 암시 적으로 프로그램에 의해 호출 콜 exit()C 컴파일러는 장소로의 종료시 프로그램에 의해 호출 콜 ( exit()콜이 이후 main()의 ' 반환). 다른 이유로는 처리 할 수 ​​없거나 무시할 수없는 신호 또는 예외 수신이 있습니다.

do_exit()기능 자체는 다수의 작업을 수행한다. 실행이 종료 된 후 프로그램의 할당 된 리소스는 커널에 의해 해제되고 나중에 사용할 수 있도록 시스템으로 반환됩니다.

출처


7
하지만 그) (자유 "를 잊고"코스 변명이다 ...
하겐 폰 Eitzen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.