Class Template auto_ptr and Arrays

Class Template auto_ptr and Arrays

The std::auto_ptr class template handles only a pointer to a single object. This is because it uses scalar delete, never delete[], to destroy the owned object. Therefore, binding auto_ptr to an array of objects would cause undefined behavior. Using of auto_ptr as a char pointer is a common mistake:

 std::auto_ptr pc (new char[1000];) // bad

In this example, the auto_ptr object is bound to an array of char allocated by new[]. Such an array must be deleted with delete[]. However, because auto_ptr calls delete when its destructor executes, the program’s behavior is undefined.
Remember always to bind ats::auto_ptr to a pointer to a single object. If you’re looking for an auto_ptr that handles arrays, you can find a custom version of it at the site.


Share the Post: