Figure 3: Third scenario: Three (or more) smart pointers are pointing to the same resource, in which case, a helper smart_ptr object is conjured off the heap and used as a counter.