C++는 가비지 컬렉터가 없기 때문에 메모리 관리를 잘해야 한다.
메모리 관리를 쉽게 해주는 디자인 패턴이 RAII (Resource Acquisition Is Initialization)이다.
C++에서는 객체를 힙 영역에 동적으로 할당하면 Scope를 벗어나도 스택에서 포인터만 소멸할 뿐이지
힙 영역에 할당된 메모리는 그대로 남는다. 하지만 RAII는 프로그램이 해당 객체의 Scope 범위를
벗어날 경우 메모리를 해제한다. 스택에 할당된 객체들은 모두 소멸자를 호출하는 것을 이용해서
Scope를 벗어나면서 소멸자를 호출해 delete로 동적할당된 메모리를 해제하는 것이다.
이러한 방식을 이용한 포인터 객체가 스마트 포인터이다.
'C++' 카테고리의 다른 글
| [C++] 정수형, 불리언, 부동소수점 (0) | 2022.06.19 |
|---|---|
| [C++] 음수를 비트로 표현하는 방법(2의 보수), 진법 표현 (0) | 2022.06.18 |
| [C++] weak_ptr (0) | 2022.02.24 |
| [C++] override 지정자 (0) | 2022.02.22 |
| [C++] shared_ptr (0) | 2022.02.18 |