今回はweak_ptr。 weak_ptrは弱参照の概念のためのスマートポインタです。 shared_ptrでは循環参照の問題を解決できません。 #include <iostream> #include <memory> class Sample { public: Sample() {} ~Sample() {} std::shared_ptr<Sample> ptr; }; int main() { std::shared_ptr<Sample> p1(new Sample); std::shared_ptr<Sample> p2(new Sample); p1->ptr = p2; p2->ptr = p1; return 0; } // 解放されない しかし、弱参照であるweak_ptrは参照カウントを行わないため、参照がある無しに関わらずスコープを抜けるとインスタンスを解放します