第24章へようこそ。
今日のテーマは「Weakと循環参照」です。
第22章で扱ったRcは、参照カウントが0になった瞬間にヒープ上のあたいを解放する型でした。
誰か1人でも所有者が残っている限り、あたいは生き続ける。
この設計には1つの構造的な弱点があります。
複数のRcが互いに相手を所有し合うとき、カウントがどの所有者から見ても1以上のままで、永久に0に達しない状況が起こり得る。
誰もアクセスできなくなった後も、ヒープ上のあたいが解放されないまま残る。
これが循環参照と呼ばれる問題で、メモリリークの典型的な発生源です。
この問題を解くために用意されているのがWeakです。
今日はWeakの構造、強い参照と弱い参照の違い、循環をどう解くか、Rcの内部に弱カウントがどう存在しているかを扱います。