반응형
동적메모리
C++에서 NEW와 DELETE를 이용하여 동적 메모리를 관리합니다. 동적 메모리를 실수 없이 관리하는 것은 생각보다 까다롭습니다. 용도가 다한 동적 객체를 반환하지 않으면 쓰레기(garbage)가 생성되어 메모리 누수(memory leak)가 발생하고, 객체를 가리키는 포인터가 존재하는데 객체를 삭제하면 유효하지 않은 주소를 가지는 포인터가 생길 수 있습니다.
스마트 포인터
c++은 동적 메모리를 쉽고 안전하게 사용할 수 있도록 3종류의 스마트 포인터를 제공합니다.
shared_ptr은 다수의 포인터가 하나의 객체를 가리키는 것을 허용합니다.
unique_ptr은 가리키는 객체를 온전히 소유한다.
weak_ptr은 shared_ptr이 가리키는 객체에 대한 weak reference를 제공한다.
자동으로 이 객체를 가리키는 포인터가 0이 될 때 삭제를 해줍니다. 그럼 이 garbage 문제를 신경을 쓰지 않아도 됩니다. 그런 기능을 해주는 것이 바로 shared_ptr입니다.
세 가지 포인터는 모두 <memory> 해더에 정의되어 있습니다. 스마트 포인터는 보통 포인터처럼 작동하지만 그것이 가리키는 객체를 자동으로 삭제해줍니다.
반응형
'IT 프로그래밍 > C++' 카테고리의 다른 글
[c++] 2702번 초6 수학 (0) | 2024.05.25 |
---|---|
[c++] 2903번 중앙 이동 알고리즘 (0) | 2024.05.25 |
c++ 포인터 설명 (0) | 2024.05.17 |
[따배시 7.12]재귀적 함수 출력 (0) | 2024.05.12 |
[따배시 C++ 8.6] 소멸자 destructor (0) | 2024.04.10 |