The Standard Library’s auto_ptr class template automatically destroys an object that is allocated on the free store when the current scope is exited. For example:
#include //definition of auto_ptr#include using namespace std;int main(){ auto_ptr ps (new string); *ps = "hello";} //ps is automatically destroyed at this point
Note however, that using auto_ptr to for an array of objects results in undefined behavior because the destructor of auto_ptr calls plain delete (and never delete []) to destroy its bound object. As you know, only operator delete[] should be used in order to destroy an array of dynamically-allocated objects. Therefore, never store arrays of objects in an auto_ptr:
int main(){ auto_ptr ps (new string[2]); //bad} //undefined behavior