A bit more than a year ago I discovered what smart pointers are, thanks to the Boost Smart Pointers library. Since then I can no longer think of a C++ program that handles dynamic memory without them, because it is highly subject to programming mistakes and is hard to write. (Of course, there are exceptions.)
This is why I decided to write the Smart Pointers in C++ article which just got published in ONLamp.com. It contains an introduction to the idea behind smart pointers and describes those included in the C++ standard library and Boost. Hope you find it interesting!