데스크톱 프로그램이 있습니다. 대부분의 운영 체제는 자체 주소 공간에서 프로그램을 실행합니다.어떤 운영 체제가 메모리 누수를 없애 냅니까?
프로그램이 종료되면 대부분의 운영 체제는 프로그램에서 할당 한 메모리를 해제하고 메모리 스택으로 다시 보내 재사용 할 수 있다고 생각합니다.
내가 알지 못하는 것은 프로그램에 메모리 누수가 있는지, 재사용을 위해 메모리가 유출되거나 컴퓨터가 재부팅 될 때까지 손실되는지 여부입니다.
오늘 제가 질문 한 질문에 대한 답변입니다 : Do Small Memory Leaks Matter Anymore?, 그리고 거기에 몇 가지 의견이 있는데 프로그램 종료시 프로그램 메모리가 해제된다는 내용이 있습니다. 프로그램이 완료되었을 때 누출이 해소된다면, 내 프로그램에 가장 작은 누출을 엄격히 제거하는 데 대한 부담을 덜어줍니다.
특히 저는 Windows 프로그래머이며 Windows 98, 2000, XP, Vista 및 7에서 어떤 일이 발생했는지 알 필요가 있습니다. 그러나 Mac에서도 무슨 일이 일어나는지 듣고 싶습니다. 및 유닉스 기계.
설명 : 나는 비 성장 누출에 대해 이야기하고 있습니다. 이것은 프로그램이 실행될 때 한 번 발생하는 일정한 크기의 누수입니다.
프로그램에서 지속적으로 증가하는 누수가 심각하고 고정되어야한다는 것을 알고 있습니다.
어느 쪽이든, 누설을 수정해야하는지 여부는 문제가 아닙니다. 프로그램이 끝나면 운영체제가 누출 된 메모리를 돌려 줄지 여부입니다.
+1하지만 K & R은 코드 누출시에도 아무리 작아도 울부 짖습니다! – phoebus
모든 운영 체제에서 그게 사실입니까? 언제 OS가 공유 메모리 공간에서 전환 했습니까? – lkessler
제한된 장치 (예 : 로우 엔드 8 비트 임베디드 컨트롤러)에서 실행되지 않는 모든 최신 운영 체제에 해당됩니다. 이 기능을 사용 가능하게 한 주요 요소는 가상 메모리 및 하드웨어 메모리 관리 장치 (MMU)입니다. 모든 시스템에서이 작업을 수행 할 수 있지만 VM/MMU 하위 시스템을 사용하면 훨씬 쉽게 처리 할 수 있습니다. 그리고 "보호 된"메모리는 이것을 제거하기위한 요구 사항이 아닙니다. 예를 들어 구형 Mac OS는 메모리 보호 기능이 없었습니다. 한 프로세스가 다른 프로세스의 메모리 이미지를 강타 할 수 있었지만 프로세스가 종료 될 때 프로세스가 연결되지 않았습니다. 7 to go –