|
|
I've used boost::shared_ptr and boost::intrusive_ptr with success. intrusive_ptr is more efficient than shared_ptr, and smaller to boot. :) I've never had a situation where using smart pointers is a significant performance hit. If it is, you can always go back to raw pointers for a bit. (Making sure the memory management is still correct, of course.)
Never done refcounting in multithreaded situations, sorry.
|