Interlude: Memory API

yalpalyappap·2021년 1월 5일
0

운영체제

목록 보기
6/20

Freeing Memory Before You Are Done With it

메모리 사용이 다 끝나지 않았는데 해제를 해버린 경우를 일컬어 dangling pointer라고 부른다.

Why no memory is leaked once your process exits

어떤 짧은 프로그램을 작성하고, 메모리 할당을 한 후 종료전에 해제를 해야하는가?
해제를 안하는 것이 이상하겠지만, 해제를 하지 않아도 실제로는 메모리 누수가 없다.

그 이유는 다음과같다.
실제 메모리 관리 시스템에는 2가지 종류가 있다.

  1. OS에 의해서 프로세스가 실행되면 메모리를 할당하고, 종료시에 다시 회수하는 메모리 관리 시스템이 있다.
  2. 각각의 프로세스 안에서 실행되는 메모리 관리 시스템이 있다. 메모리를 해제하지 않더라도, 프로그램 실행이 완료되면 운영체제가 프로세스의 모든 (code, stack, heap등...) 메모리를 회수한다.

따라서 짧게 동작하는 프로그램은 메모리 누수가 문제를 일으키지 않는다, 물론 좋은 프로그램은 아니다.
만약 웹서버나, 데이터베이스같이 끝나지 않는 프로그램을 만들었을 때 메모리 누수는 프로그램의 메모리를 모두 소모하여 정말 큰 문제를 일으킨다.

출처 : OSTEP

profile
안녕하세요! 개발 공부를 하고있습니다~

0개의 댓글