Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Home » Tip Bank » C++
Language: C++
Expertise: Beginner
Jul 2, 2001

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< char> 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 www.boost.org site.
Danny Kalev
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date