스마트 포인터

Moondy·2022년 5월 13일
0

등장배경

  • 자바는 GC가 메모리 관리하지만, C++은 사용자가 메모리 할당/해제 함
  • 이 때 할당받은 메모리를 해제하지 않을 경우 프로그램은 계속 사용하고 있는 메모리로 인지하고 해당 메모리를 사용하지 않는 메모리 누수(memory leak) 발생
  • 이를 방지하기 위해 등장

개념

  • 포인터처럼 사용하는 클래스 템플릿으로 메모리를 자동 해제
  • 객체 사용이 끝나면 소멸자가 자동으로 호출되어 메모리 해제

장점

  • 일일이 메모리 할당하는 코드 작성 안해도 됨
  • 개발자의 실수로 인한 메모리 누수 방지

단점

  • 정적으로 선언된 포인터 값이 NULL 인지 아닌지 체크 불가능
  • 디버깅과 유지보수 어렵기 때문에 상황을 잘 보고 판단해야함

자바 개발자에게 시사하는 바

  • 메모리를 즉시 해제하느냐, 체크만 해두었다가 GC가 처리하느냐의 차이가 있을 뿐, 자바의 오브젝트 관리와 메커니즘이 같다
profile
DevOps를 살짝 찍먹하는 BackEnd 개발자

0개의 댓글