Weakポインタの紹介
メニューを表示するにはスワイプしてください
スマートポインタ std::weak_ptr は、指し示すオブジェクトの所有権を持たないポインタ。つまり、weakポインタはオブジェクトの参照カウントを増やさない。
std::weak_ptr は、sharedポインタによって管理されているオブジェクトへのアクセスを、その寿命を延長せずに可能にする。すべてのsharedポインタがスコープ外になると、weakポインタが存在していてもオブジェクトは削除される。これは、共有オブジェクトの解放を妨げずに監視する場合に有用。
main.cpp
12345678910111213141516171819#include <iostream> #include <memory> struct Resource { Resource() { std::cout << "Resource created\n"; } ~Resource() { std::cout << "Resource destroyed\n"; } }; int main() { std::shared_ptr<Resource> sp1 = std::make_shared<Resource>(); std::weak_ptr<Resource> wp = sp1; // Weak pointer does not increase ref count std::cout << "Shared pointer going out of scope...\n"; sp1.reset(); // Resource is deleted if (wp.expired()) std::cout << "Resource no longer exists\n"; }
weakポインタのライフサイクル
weakポインタはオブザーバーであり、オブジェクトにアクセスできるが寿命を延長しない。
そのライフサイクルはsharedポインタに依存する。最後のsharedポインタが破棄されると、オブジェクトは解放され、weakポインタは期限切れとなる。weakポインタ自体は残るが、空になる。
すべて明確でしたか?
フィードバックありがとうございます!
セクション 1. 章 10
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 1. 章 10