0

나는 청소가 좋은 일임을 이해합니다. 또한 OS 내부를 이해하므로 내 프로세스가 종료되면 메모리가 해제됩니다. 그러나 나는 다른 관점을 제시하고자합니다. 나는 출구에서 추억을 풀어 버리는 것이 오히려 나쁜 생각이다.출구에서 청소를 하시겠습니까? 아니면

예 : 나는 출구에서 자유 로워 진다면, RAM으로 가져와야 할 필요가있다. 나가기를하지 않으면 빠져 나와서 하나의 표에 무료로 표시됩니다.

전반적으로 OS가 많이 바뀌 었습니다 (기본은 동일하게 유지됨).이 질문은 A_VERY_PLATFORM_DEPENDENT (으)로 생각할 수 있지만, 오늘날 애플리케이션 개발자의 관점에서 보았을 때 일부 프레임 워크에 갇히거나 COM으로 원시 기술을 연구하고있는 데어 데블 코더는 크게 의존하고 있습니다. 저는 VERY_CONTROLLED_ENVIRONMENT를 호출 할 것입니다.

TL;DR : 현대 OS에서는 종료시 정리를 수행해서는 안됩니다. 내가 틀렸다고 생각한다면 왜?

추신 : 나는 RTOS에 대해 이야기하지 않고있다. 즉, 제어 된 환경이란 Windows, Linux 및 디바이스 드라이버 개발을 의미하지 않는다는 것을 의미한다.

+0

응용 프로그램 '무료'와 SO' 무료 사이에 차이점이 있음을 의심합니다. – bolov

+0

2 주 전에 논의되었습니다. 나는이 사본을 찾아 표시 할 것이다. –

+2

파일 핸들, 커널 핸들 등 비 메모리 리소스는 어떻게됩니까? 그리고 메모리 기반 리소스를 정리하지 않으면 어떻게 "외부"핸들을 보유하고 있지 않은지 확인할 수 있습니까? –

답변

7

스왑 된 메모리 블록은 사용자가 액세스 할 때만 가져옵니다. 블록을 비우는 것은 메모리 액세스가 필요하지 않은 "부기"이벤트입니다. 메모리를 확보하라는 요청을 건너 뛰어 아무 것도 얻지 못할 것입니다.

종료시 수동으로 리소스를 해제해야하는 이유는 의도하지 않은 누출을 의도적 인 누수와 구별 할 수 있으므로 메모리 프로파일 링 도구를 사용할 수 있기 때문입니다. 그 이유만으로도 메모리 정리를 건너 뛰지 않을 것을 권장 할만큼 좋습니다.

+1

나는 이것을 +2 원한다. – bolov

+0

'그 이유만으로도 메모리 정리를 건너 뛰지 말 것을 권한다.' 음 ... 아니. 장점 중 하나입니다. 우선적 인 문제는 아닙니다. –

+0

@MartinJames 전적으로이 이유만으로 충분하다고 말하고 있습니다. 코드가 생산에서 중요한 작업을 실행하는 동안 야간에 잘 수있는 등의 다른 좋은 이유가있을 수 있습니다. 개인적으로, C++ 코드를 메모리 프로파일 러를 실행하지 않고 프로덕션으로 릴리스하는 것은 너무 위험하다는 것을 알고,보고 된 모든 경고를 수정합니다. – dasblinkenlight

관련 문제