質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
ポインタ

ポインタはアドレスを用いてメモリに格納された値を"参照する"変数です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

2623閲覧

weak_ptrの強みがわからない

apa

総合スコア68

ポインタ

ポインタはアドレスを用いてメモリに格納された値を"参照する"変数です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/05/30 07:26

弱参照とは
弱参照を知るにはガベージコレクションについて知る必要があります。ガベージコレクションとは不要になったオブジェクトを自動で削除する仕組みのことです。このガベージコレクションでオブジェクトの削除の判断に使われるのが参照です。ガベージコレクションはオブジェクトが参照されている間は削除せず、オブジェクトへの参照がなくなったら削除します。そして、弱参照はガベージコレクションが参照とみなさない参照です。オブジェクトがいくら弱参照されていても、通常の参照がないのであればガベージコレクションはそのオブジェクトを削除します。このように、ガベージコレクションにおいてオブジェクトの生存期間を延命させない参照を弱参照と呼びます。

ということが書いてあるサイトを見つけたのですが、
この通りであれば参照カウントを持っていない
weak_ptrはポインタが入った瞬間GCが働いて(正確な時間はわかりませんが)一定時間たつと消えるという認識であっていますでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

弱参照とは
弱参照を知るにはガベージコレクションについて知る必要があります。[...]

参照されたサイトは 【C++】弱参照のすすめ - Flat Leon Works でしょうか?引用範囲ではガベージコレクションにおける弱参照の一般論を説明しており、該当サイトの後続説明にもある通り C++言語にはガベージコレクション機構は存在しません

C++での弱参照
C++には言語自体にはガベージコレクションの機能がありませんが、C++11から標準ライブラリにスマートポインタという形でガベージコレクションが導入されました。


参照カウントを持っていないweak_ptrはポインタが入った瞬間GCが働いて(正確な時間はわかりませんが)一定時間たつと消えるという認識であっていますでしょうか?

C++においては、上記理解は完全に誤っています。GC機構そのものが存在しません。

C++標準ライブラリのstd::shared_ptrstd::weak_ptrは相補的(あるいは従属関係)な機能です。下記サイトの説明も参考にください。

投稿2021/05/31 15:12

編集2021/05/31 15:17
yohhoy

総合スコア6191

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

weak_ptr は「shared_ptr の管理下にあるオブジェクトを」参照するためのもので、 weak_ptr 単体で使うことは無いです。

典型的な利用例としては、参照カウントは循環参照が作られてしまうと決して解放されない状況が生まれてしまうので循環参照が発生しうるデータ構造の場合に一か所以上は弱参照にしておくなどといった用例が知られています。

投稿2021/05/30 07:58

SaitoAtsushi

総合スコア5466

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問