shared_ptr 객체를 전달받은 함수에서 사용 후, 자원이 해제되는지 확인한 결과입니다. 아직 C++에 익숙하지 못해서 제 맘대로 바꿔보면서 감을 익히는 중입니다. 2021. 02. 15 - 최초작성 shared_ptr 객체를 생성한 후, 함수에 객체를 전달한 후, 지역 변수에 대입해주면 자동으로 shared_ptr의 객체가 자원해제 되는줄 알았습니다. 하지만 예상과 달리 Data 클래스의 소멸자가 호출되지 않았습니다. 소멸자가 호출되었다면 “delete[] buf” 메시지가 출력되야 합니다. #include #include #include class Data { public: ~Data() { if (buf != nullptr) { delete[] buf; printf("delete[] buf\n"..
C++의 shared_ptr 예제 및 사용방법을 다루고 있습니다. 아직 C++에 익숙하지 못해서 제 맘대로 바꿔보면서 감을 익히는 중입니다. 2020. 01. 01. 최초 작성 std::shared_ptr 이란 shared_ptr은 c++ 11이 제공하는 스마트 포인터 클래스 중 하나입니다. 포인터를 더 이상 사용하지 않는 경우 메모리를 자동으로 해제해줍니다. 잘 사용하면 메모리 해제를 제때 안해 발생하는 메모리 릭(memory leak) 문제를 방지할 수 있습니다. shared_ptr 객체 생성 shared_ptr 객체 생성시 바로 메모리를 가리키는 포인터를 연결하는 방법은 아래 예제에 보이는 2가지가 있습니다. make_shared를 사용하는 것을 권장합니다. shared_ptr을 위한 힙 메모리에 ..