auto_ptr [C++ Reference]
Keywords: stl,memory,auto_ptr
Date: 2008-10-14T15:42:07-0700

[[auto_ptr]]
C++ Reference
Translations of this page?:

- en
- br-pt
- cn
- fr
- it
- jp
- pl
- ru
- tr

## auto_ptr

Syntax:

        #include <memory>
        auto_ptr<class TYPE> name

The auto_ptr class allows the programmer to create pointers that point to other objects. When auto_ptr pointers are destroyed, the objects to which they point are also destroyed.

The auto_ptr class supports normal pointer operations like =, *, and ->, as well as two functions TYPE* get() and TYPE* release(). The get() function returns a pointer to the object that the auto_ptr points to. The release() function acts similarily to the get() function, but also relieves the auto_ptr of its memory destruction duties. When an auto_ptr that has been released goes out of scope, it will not call the destructor of the object that it points to.

Warning: It is generally a bad idea to put auto_ptr objects inside C++ STL containers. C++ containers can do funny things with the data inside them, including frequent reallocation (when being copied, for instance). Since calling the destructor of an auto_ptr object will free up the memory associated with that object, any C++ container reallocation will cause any auto_ptr objects to become invalid.

Example code:

     #include <memory>
     using namespace std;

     class MyClass {
     public:
       MyClass() {} // nothing
       ~MyClass() {} // nothing
       void myFunc() {} // nothing
     };

     int main() {
       auto_ptr<MyClass> ptr1(new MyClass), ptr2;

       ptr2 = ptr1;
       ptr2->myFunc();

       MyClass* ptr = ptr2.get();

       ptr->myFunc();

       return 0;
     }

Edit this page • Old revisions
• • • Login • Index • Recent changes • RSS • cc •