devxlogo

Using auto_ptr

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;        throw;    }    delete ptr;}

The C++ standard libary provides an automatic pointer type, auto_ptr, which you can use by including . 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 void foo(int n){    std::auto_ptr ptr(new my_class);    ptr->process(n);}
See also  Professionalism Starts in Your Inbox: Keys to Presenting Your Best Self in Email
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist