Pointer - 메모리 값에 대한 주소 값을 저장하는 변수
type* ptr = &x; // 포인터 생성, 동적 메모리 할당에 유용
✓ 변수 x와 변수 x의 포인터 ptr
x = x의 값 = *ptr
&x = x의 주소 값 = ptr
ptr = 포인터가 가르키는 주소 값 = &x
*ptr = 주소에 일력된 값, 역참조 = x
class variable; // 클래스 변수 선언
class* ptr; // 클래스 포인터 변수 선언
variable.func(); // <code>.</code> 접근 연산자를 사용하여 멤버 접근
ptr->func(); // <code>-></code> 접근 연산자를 사용하여 멤버 접근
할당 new , 해제(소멸) delete
type* ptr = new type(value); // 동적 메모리 할당
delete ptr; // 메모리 할당 해제
✓ 주의할 점
이를 방지하기 위해 스마트 포인터를 사용합니다.
Smart Pointer
#include <memory>
C++의 특별한 타입으로, 포인터이지만 스스로 메모리를 관리합니다. 메모리 관리의 복잡성을 줄이고, 메모리 누수를 방지합니다. 더 이상 필요하지 않을 때 자동으로 메모리 할당을 해제합니다.
auto_ptr<int> ptr1(new int); // 포인터 선언
*ptr1 = 5; // 역참조를 통해 값 입력
auto_ptr<int> ptr2 = ptr1; // 복사
cout << *ptr2 << *ptr1; // undefined behavior
move()함수를 통한 소유권 이전unique_ptr<int> ptr1(new int(5)); // 선언 및 초기화
unique_ptr<int> ptr2(new int); // 선언
ptr2 = move(ptr1); // 소유권 이전 *ptr2 = 5;
// ptr1은 nullptr