Site Tools


wiki:cpp-unique-ptr

Table of Contents

C++ unique_ptr

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.

// compile: g++ -o unique unique.cpp
// run: ./unique
// description: unique_ptr transfers ownership and auto-deletes on destruction
 
#include <iostream>
#include <memory>
 
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<Resource> r1 = std::make_unique<Resource>();
        r1->use();
 
        std::unique_ptr<Resource> r2 = std::move(r1);  // ownership transferred
        r2->use();
    }  // r2 destroyed here, resource freed
 
    return 0;
}
wiki/cpp-unique-ptr.md · Last modified: by 127.0.0.1