# C++ unique_ptr **[unique_ptr](https://en.cppreference.com/w/cpp/memory/unique_ptr)** is an exclusive-ownership smart pointer that automatically deletes its managed object when destroyed. Only one `unique_ptr` can own an object at a time; ownership is transferred via move semantics, never copied. Use `unique_ptr` by default for dynamic memory to prevent leaks and clarify ownership. ## Example This example demonstrates exclusive ownership transfer and automatic cleanup with unique_ptr. ```cpp // compile: g++ -o unique unique.cpp // run: ./unique // description: unique_ptr transfers ownership and auto-deletes on destruction #include #include class Resource { public: Resource() { std::cout << "Resource allocated\n"; } ~Resource() { std::cout << "Resource freed\n"; } void use() { std::cout << "Using resource\n"; } }; int main() { { std::unique_ptr r1 = std::make_unique(); r1->use(); std::unique_ptr r2 = std::move(r1); // ownership transferred r2->use(); } // r2 destroyed here, resource freed return 0; } ```