RSS Feed
Download our iPhone app
Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Home » Tip Bank » C++
Language: C++
Expertise: Intermediate
Oct 24, 2006

Using auto_ptr

Suppose that a function normally allocates memory for an object, uses it, and then deallocates the memory. But if the function exits before reaching the end, either because of a return statement or an exception, it must still not exit without deallocating the memory:

void foo(int n)
    my_class* ptr = new my_class;

    try {
        ptr->process(n); // may throw exception
    } catch (...) {
        delete ptr;

    delete ptr;
The C++ standard libary provides an automatic pointer type, auto_ptr, which you can use by including <memory>. An auto_ptr is constructed using a pointer. You can then use and dereference auto_ptr as if it were a pointer. When an auto_ptr goes out of scope, the destructor frees the memory automatically. The example above may thus be simplified to:

#include <memory>

void foo(int n)
    std::auto_ptr<my_class> ptr(new my_class);
Kevin Spiteri
Close Icon
Thanks for your registration, follow us on our social networks to keep up-to-date