Listen

Description

第24章へようこそ。

今日のテーマは「Weakと循環参照」です。

第22章で扱ったRcは、参照カウントが0になった瞬間にヒープ上のあたいを解放する型でした。

誰か1人でも所有者が残っている限り、あたいは生き続ける。

この設計には1つの構造的な弱点があります。

複数のRcが互いに相手を所有し合うとき、カウントがどの所有者から見ても1以上のままで、永久に0に達しない状況が起こり得る。

誰もアクセスできなくなった後も、ヒープ上のあたいが解放されないまま残る。

これが循環参照と呼ばれる問題で、メモリリークの典型的な発生源です。

この問題を解くために用意されているのがWeakです。

今日はWeakの構造、強い参照と弱い参照の違い、循環をどう解くか、Rcの内部に弱カウントがどう存在しているかを扱います。