このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

所有権の問題

権利には義務が伴う、ってことで、所有権とは「破棄の義務」ってことになる。所有権を獲得するって事は、破棄の義務を背負うってことだ。

Rustの所有権モデルとか(いやっ、よく知らないけど^^;)、ユニークポインターだと、所有者を単一にしているようだけど、それでいいんか? と思う。

例えば、ポインターで繋いだ有向グラフを考えると、ノードは複数ノードから指される。どのノードからも指されなくなった=非可達になったら破棄(=解放、回収)する場合、普通は参照カウンタを使う。この例では、明確な所有者はいない。ゆるい共同所有方式だ。

つまり、あるノードを指している全てのノードは、破棄の義務を負っていると言えるが、自分で破棄するとは限らない。たまたま最後の参照を消す場合だけ破棄する必要がある。

「参照を消す」を一種の破棄と考えて、破棄の方法が二種類(放置と実際に破壊する)がある、と考えることも出来るか? でもスッキリしない。

「所有権=破棄の義務」という概念を導入するとして、単一所有者と共同所有の2つがあるのか、それとも単一所有者モデルだけで押し切れるのか?