BREW で Java 風のクラスを作る(3)


Java っぽく作るためには、メモリがどこからも参照されなくなったら自動的に解放されるようにする必要があります。
方法としては、

  1. GC を実装する。
  2. AddRef(), Release() を使用する。
  3. スマートポインタを使用する。

ぐらいだと思われます。
1番目は規模が大きすぎるので除外します。
2番目と3番目は参照カウントによる管理だから同じと思うかもしれませんが、2番目の方法は実体の中に参照カウントの値を持っていて、3番目の方法は実体の外に参照カウントの値を持っているので、少しだけ違います。
外部から見ればほとんど違いは無いですが、使用するメモリの量が2番目の方が少ないので、BREW の場合はそちらの方がいいかもしれません。
ただ、各実装毎に AddRef(), Release() を定義するという手間はあります。これはマクロや template<> である程度解決出来ます。


以下は AddRef(), Release() を用いた、自動的に解放されるような実装。

続きを読む