Posts of the month: june 2013


C++11 “smart” pointers need “careful” programmers

I’m taking a deeper look into the new C++11 features. One of the most useful features turned out to be shared_ptr, a smart pointer that, along with unique_ptr and weak_ptr, superseded the almost useless auto_ptr, which is now deprecated.

Informally speaking, shared_ptr wraps a pointer to an object, and has an internal counter taking track of how many copies of this shared_ptr are currently managing that object. When the counter eventually reaches 0, the object is deleted.

This can be very convenient, especially when memory management is an issue since the ownership relationships between objects are not clearly evident — and it’s hard to find out when and how an object should be deleted.

Still, there is a subtle issue that one should take care of when using shared_ptr. I bet it is quite obvious for most experienced C++ programmers, but I think everyone can do a mistake, and this post may actually save you from a big headache, sometime in the future. Read more...

Tags: cpp, cpp11
Fork me on GitHub