トップページ – Modern C++編 C++編](../../index.html) – 第5章
問題① 参照カウンタの値を増減させないのであれば、std::weak_ptr ではなく、生のポインタを使ってはいけないのでしょうか? std::weak_ptr を使うことに、どのような利点がありますか?
確かに std::weak_ptr自体は参照カウンタに影響を与えませんが、std::weak_ptr を経由してリソースにアクセスする際には、std::shared_ptr を使用するのでした(本編参照)。こうすることで、実はもうリソースが解放されていて、存在しないことを検出できます。生のポインタでは、解放済みのリソースへアクセスしようとする時点で、未定義の動作になってしまうため、安全な運用ができません。
また、std::weak_ptr は、expiredメンバ関数を使って、共有管理されているリソースの生存をいつでも安全に「確認」できます。先ほどの説明と同じことですが、生のポインタでは安全に確認できません。
新規作成。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |