커널은 커널 메모리 내에 프로세스 레코드 콜렉션을 가지고 있으며 각 프로세스, 소비 된 메모리 양, 입출력, 파일 핸들 또는 inode와 같은 자원을 추적합니다. 프로세스 레코드는 대개 커널의 작업 포인터가 프로세스 기록을 가리키는 대기열에 있습니다 (즉, '멀티 태스킹'에 대한 인식이 왜 그렇게 눈을 깜박 거리게하는지 설명합니다) , 정말로, 그것은 커널의 관점에서 단일 태스크를 수행하고있다). 상기 프로세스에 의해 얼마나 많은 메모리가 씹어 올려 졌는지를 알려주는 필드가 프로세스 레코드에있다.
예 커널은 다른 프로세스에서 사용할 수 있도록 자체 풀에 메모리를 다시 확보합니다. 또한 위의 John Weldon이 지적한 것처럼 메모리 누수와 관련하여 절대적으로 100 % 정확합니다. 나는 다른 posting에서 이것을 언급했다. 메모리 누수가 없다면 모든 malloc은 무료이다. 따라서 디버깅 세션에 대해 걱정하지 마십시오. 커널이 메모리를 확보 할 책임이 있기 때문에 완벽하게 괜찮습니다.
일부 응용 프로그램 (특히 데몬)은 다음 번 다시 부팅하기 전에 데몬이 장시간 실행되므로 일부 응용 프로그램 (특히 데몬)을 디버깅해야하며 메모리 누수가 발생하지 않아야합니다. 덧붙여 말하자면 내가 가장 좋아하는 책 'Expert C Programming, Deep C Secrets - Peter Van Der Linden'에 언급되었는데, Sun에있는 한 단계에서 인쇄용 도구 인 'printtool'이 있었지만, 인쇄 스풀러 프로그램에서 메모리 누수가 있었고 Sun 컴퓨터를 다시 부팅하면 문제가 해결되어 대기열이 막혔습니다. 메모리 누수와 관련하여 자세히 설명합니다.
호프가 도움이 되었으면 안녕하세요, 탐.
짧은 실행 응용 프로그램에서 메모리가 누출된다는 것은 괜찮습니까? 메모리 누수가 실제로 발생하는 것보다 더 해롭지 않게 만듭니다. – pmr
그것은 항상 흑백이 아닌 상황 적이지만 일반적으로 메모리 누수가 심각하지 않으면 짧은 실행 프로그램에서 심각하지 않습니다. –
문제는 단명 한 애플리케이션을 작성한 코드가 지금부터 1 년 후에 어떻게 사용되는지 알지 못한다는 것입니다. – shoosh