boost::shared_ptr等に代表される参照カウント式のスマートポインタは、
巡回参照にさえ気をつけていれば問題ない(リークは起きない)。
real smart pointerって何か知らないんだけど、GCのサブセットか何か?