weak_ptr 解答ページ | Programming Place Plus Modern C++編【標準ライブラリ】 第5章

トップページModern C++編 C++編](../../index.html) – 第5章

Modern C++編は作りかけで、更新が停止しています。代わりに、C++14 をベースにして、その他の方針についても見直しを行った、新C++編を作成しています。
Modern C++編は削除される予定です。

問題①

問題① 参照カウンタの値を増減させないのであれば、std::weak_ptr ではなく、生のポインタを使ってはいけないのでしょうか? std::weak_ptr を使うことに、どのような利点がありますか?


確かに std::weak_ptr自体は参照カウンタに影響を与えませんが、std::weak_ptr を経由してリソースにアクセスする際には、std::shared_ptr を使用するのでした(本編参照)。こうすることで、実はもうリソースが解放されていて、存在しないことを検出できます。生のポインタでは、解放済みのリソースへアクセスしようとする時点で、未定義の動作になってしまうため、安全な運用ができません。

また、std::weak_ptr は、expiredメンバ関数を使って、共有管理されているリソースの生存をいつでも安全に「確認」できます。先ほどの説明と同じことですが、生のポインタでは安全に確認できません。


参考リンク


更新履歴

’2017/11/1 新規作成。



第5章のメインページへ

Modern C++編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る